diff --git a/code/datums/components/crafting/recipes/weapons.dm b/code/datums/components/crafting/recipes/weapons.dm index 6baa4b5e9b..b8fe974e05 100644 --- a/code/datums/components/crafting/recipes/weapons.dm +++ b/code/datums/components/crafting/recipes/weapons.dm @@ -48,3 +48,11 @@ time = 40 category = CAT_WEAPONRY subcategory = CAT_AMMO + +/datum/crafting_recipe/primitive_shield + name = "Primitive Shield" + result = /obj/item/weapon/shield/primitive + reqs = list(list(/obj/item/stack/material/wood = 2), list(/obj/item/weapon/reagent_containers/glass/bucket/wood =1), list(/obj/item/stack/material/cloth = 5)) + time = 120 + category = CAT_WEAPONRY + subcategory = CAT_WEAPON diff --git a/code/datums/outfits/costumes/halloween.dm b/code/datums/outfits/costumes/halloween.dm index 76b510807a..35f4aa238d 100644 --- a/code/datums/outfits/costumes/halloween.dm +++ b/code/datums/outfits/costumes/halloween.dm @@ -25,8 +25,8 @@ var/obj/item/weapon/storage/briefcase/new_briefcase = new(H) for(var/obj/item/briefcase_item in new_briefcase) qdel(briefcase_item) - new_briefcase.contents += new /obj/item/toy/crossbow - new_briefcase.contents += new /obj/item/weapon/gun/projectile/revolver/capgun + new_briefcase.contents += new /obj/item/weapon/gun/projectile/pistol/toy + new_briefcase.contents += new /obj/item/ammo_magazine/mfoam_dart/pistol new_briefcase.contents += new /obj/item/clothing/mask/gas/clown_hat H.equip_to_slot_or_del(new_briefcase, slot_l_hand) @@ -102,7 +102,7 @@ suit = /obj/item/clothing/suit/storage/toggle/brown_jacket/sleeveless shoes = /obj/item/clothing/shoes/boots/jackboots gloves = /obj/item/clothing/gloves/fingerless - l_pocket = /obj/item/toy/crossbow + l_pocket = /obj/item/weapon/gun/projectile/revolver/toy/crossbow/halloween r_pocket = /obj/item/device/flashlight/color/red /decl/hierarchy/outfit/costume/pirate @@ -119,4 +119,12 @@ shoes = /obj/item/clothing/shoes/white suit = /obj/item/clothing/suit/storage/hooded/chaplain_hoodie/whiteout gloves = /obj/item/clothing/gloves/white - mask = /obj/item/clothing/mask/surgical \ No newline at end of file + mask = /obj/item/clothing/mask/surgical + +/decl/hierarchy/outfit/costume/marine + name = OUTFIT_COSTUME("Ruin Marine") + uniform = /obj/item/clothing/under/color/grey + shoes = /obj/item/clothing/shoes/brown + head = /obj/item/clothing/head/marine + suit = /obj/item/clothing/suit/marine + r_hand = /obj/item/weapon/gun/projectile/revolver/toy/sawnoff \ No newline at end of file diff --git a/code/datums/supplypacks/misc_vr.dm b/code/datums/supplypacks/misc_vr.dm index a088257b40..6db5602175 100644 --- a/code/datums/supplypacks/misc_vr.dm +++ b/code/datums/supplypacks/misc_vr.dm @@ -157,17 +157,4 @@ ) cost = 300 containertype = /obj/structure/closet/crate - containername = "cordless jukebox speakers crate" - -/datum/supply_pack/misc/sword - name = "sword" - contains = list( - /obj/item/weapon/material/sword =2 - ) - cost =100 - access = list(access_explorer, - access_security,) - - one_access = TRUE - containername = "sword crate" - containertype = /obj/structure/closet/crate/secure/gear \ No newline at end of file + containername = "cordless jukebox speakers crate" \ No newline at end of file diff --git a/code/datums/supplypacks/munitions.dm b/code/datums/supplypacks/munitions.dm index daeee1ffbd..71ee712e13 100644 --- a/code/datums/supplypacks/munitions.dm +++ b/code/datums/supplypacks/munitions.dm @@ -187,6 +187,14 @@ containername = "Magnetic ammunition crate" access = access_security +/datum/supply_pack/munitions/claymore + name = "Weapons - Melee - Claymores" + contains = list(/obj/item/weapon/material/sword = 2) + cost = 150 + containertype = /obj/structure/closet/crate/secure/weapon + containername = "Claymore crate" + access = access_armory //two swords that are a one-hit 40 brute + IB chance should be armory-locked + /datum/supply_pack/munitions/shotgunammo name = "Ammunition - Shotgun shells" contains = list( diff --git a/code/datums/supplypacks/recreation.dm b/code/datums/supplypacks/recreation.dm index a3b6ad30d5..ba6a33d48c 100644 --- a/code/datums/supplypacks/recreation.dm +++ b/code/datums/supplypacks/recreation.dm @@ -1,7 +1,7 @@ /* -* Here is where any supply packs -* related to recreation live. -*/ + * Here is where any supply packs + * related to recreation live. + */ /datum/supply_pack/recreation @@ -23,6 +23,25 @@ containertype = /obj/structure/closet/crate/allico containername = "foam weapon crate" +/datum/supply_pack/recreation/donksoftweapons + name = "Donk-Soft Weapon Crate" + contains = list( + /obj/item/ammo_magazine/ammo_box/foam = 2, + /obj/item/weapon/gun/projectile/shotgun/pump/toy = 2, + /obj/item/weapon/gun/projectile/pistol/toy = 2, + /obj/item/ammo_magazine/mfoam_dart/pistol = 2 + ) + cost = 50 + containertype = /obj/structure/closet/crate/allico + containername = "foam weapon crate" + +/datum/supply_pack/recreation/donksoftvend + name = "Donk-Soft Vendor Crate" + contains = list() + cost = 75 + containertype = /obj/structure/largecrate/donksoftvendor + containername = "\improper Donk-Soft vendor crate" + /datum/supply_pack/recreation/lasertag name = "Lasertag equipment" contains = list( diff --git a/code/datums/supplypacks/supplypacks.dm b/code/datums/supplypacks/supplypacks.dm index d419198af3..14e97cce7a 100644 --- a/code/datums/supplypacks/supplypacks.dm +++ b/code/datums/supplypacks/supplypacks.dm @@ -23,6 +23,7 @@ var/list/all_supply_groups = list("Atmospherics", "Science", "Security", "Supplies", + "Vendor Refills", "Voidsuits") /datum/supply_pack diff --git a/code/datums/supplypacks/vending_refills_vr.dm b/code/datums/supplypacks/vending_refills_vr.dm new file mode 100644 index 0000000000..47ee538d7e --- /dev/null +++ b/code/datums/supplypacks/vending_refills_vr.dm @@ -0,0 +1,137 @@ +/datum/supply_pack/vending_refills + group = "Vendor Refills" + containertype = /obj/structure/closet/crate/plastic + containername = "vendor refill cartridge crate" + +/datum/supply_pack/randomised/vending_refills + group = "Vendor Refills" + containertype = /obj/structure/closet/crate/plastic + containername = "vendor refill cartridge crate" + +/datum/supply_pack/vending_refills/snack + contains = list(/obj/item/weapon/refill_cartridge/autoname/food/snack) + name = "Getmore Chocolate Corp Vendor Refill Cartridge" + cost = 10 + +/datum/supply_pack/vending_refills/fitness + contains = list(/obj/item/weapon/refill_cartridge/autoname/food/fitness) + name = "SweatMAX Vendor Refill Cartridge" + cost = 10 + +/datum/supply_pack/vending_refills/hotfood + contains = list(/obj/item/weapon/refill_cartridge/autoname/food/hotfood) + name = "Hot Foods Vendor Refill Cartridge" + cost = 10 + +/datum/supply_pack/vending_refills/weeb + contains = list(/obj/item/weapon/refill_cartridge/autoname/food/weeb) + name = "Nippon-tan Vendor Refill Cartridge" + cost = 10 + +/datum/supply_pack/vending_refills/sol + contains = list(/obj/item/weapon/refill_cartridge/autoname/food/sol) + name = "Sol-Snacks Vendor Refill Cartridge" + cost = 10 + +/datum/supply_pack/vending_refills/snix + contains = list(/obj/item/weapon/refill_cartridge/autoname/food/snix) + name = "Snix Vendor Refill Cartridge" + cost = 10 + +/datum/supply_pack/vending_refills/snlvend + contains = list(/obj/item/weapon/refill_cartridge/autoname/food/snlvend) + name = "Shop-n-Large Snacks Vendor Refill Cartridge" + cost = 10 + +/datum/supply_pack/vending_refills/sovietvend + contains = list(/obj/item/weapon/refill_cartridge/autoname/food/sovietvend) + name = "Ration Station Vendor Refill Cartridge" + cost = 10 + +/datum/supply_pack/vending_refills/coffee + contains = list(/obj/item/weapon/refill_cartridge/autoname/drink/coffee) + name = "Hot Drinks Vendor Refill Cartridge" + cost = 10 + +/datum/supply_pack/vending_refills/cola + contains = list(/obj/item/weapon/refill_cartridge/autoname/drink/cola) + name = "Robust Softdrinks Vendor Refill Cartridge" + cost = 10 + +/datum/supply_pack/vending_refills/cola_soft + contains = list(/obj/item/weapon/refill_cartridge/autoname/drink/cola_soft) + name = "Soft Robustdrinks Vendor Refill Cartridge" + cost = 10 + +/datum/supply_pack/vending_refills/sovietsoda + contains = list(/obj/item/weapon/refill_cartridge/autoname/drink/sovietsoda) + name = "BODA Vendor Refill Cartridge" + cost = 10 + +/datum/supply_pack/vending_refills/bepis + contains = list(/obj/item/weapon/refill_cartridge/autoname/drink/bepis) + name = "Bepis Softdrinks Vendor Refill Cartridge" + cost = 10 + +/datum/supply_pack/vending_refills/cigarette + contains = list(/obj/item/weapon/refill_cartridge/autoname/cigarette) + name = "Cigarette Vendor Refill Cartridge" + cost = 15 + +/datum/supply_pack/vending_refills/wardrobe + contains = list(/obj/item/weapon/refill_cartridge/multitype/wardrobe) + name = "Wardrobe Vendor Refill Cartridge" + cost = 10 + +/datum/supply_pack/vending_refills/giftvendor + contains = list(/obj/item/weapon/refill_cartridge/autoname/giftvendor) + name = "AlliCo Baubles and Confectionaries Vendor Refill Cartridge" + cost = 20 + +/datum/supply_pack/vending_refills/general_food + contains = list(/obj/item/weapon/refill_cartridge/multitype/food = 5) + name = "5-Pack Food Vendor Refill Cartridges" + cost = 75 + +/datum/supply_pack/vending_refills/general_drink + contains = list(/obj/item/weapon/refill_cartridge/multitype/drink = 5) + name = "5-Pack Drink Vendor Refill Cartridges" + cost = 75 + +/datum/supply_pack/vending_refills/general_clothing + contains = list(/obj/item/weapon/refill_cartridge/multitype/clothing = 5) + name = "5-Pack Clothing Vendor Refill Cartridges" + cost = 75 + +/datum/supply_pack/vending_refills/general_technical + contains = list(/obj/item/weapon/refill_cartridge/multitype/technical = 5) + name = "5-Pack Technical Vendor Refill Cartridges" + cost = 75 + +/datum/supply_pack/vending_refills/general_specialty + contains = list(/obj/item/weapon/refill_cartridge/multitype/specialty = 5) + name = "5-Pack Specialty Vendor Refill Cartridges" + cost = 150 + +/datum/supply_pack/randomised/vending_refills/value_pack // 5 random vendor-specific cartridges at lower average price. But why? + num_contained = 5 + contains = list(/obj/item/weapon/refill_cartridge/autoname/food/snack, + /obj/item/weapon/refill_cartridge/autoname/food/fitness, + /obj/item/weapon/refill_cartridge/autoname/food/hotfood, + /obj/item/weapon/refill_cartridge/autoname/food/weeb, + /obj/item/weapon/refill_cartridge/autoname/food/sol, + /obj/item/weapon/refill_cartridge/autoname/food/snix, + /obj/item/weapon/refill_cartridge/autoname/food/snlvend, + /obj/item/weapon/refill_cartridge/autoname/food/sovietvend, + /obj/item/weapon/refill_cartridge/autoname/drink/coffee, + /obj/item/weapon/refill_cartridge/autoname/drink/cola, + /obj/item/weapon/refill_cartridge/autoname/drink/cola_soft, + /obj/item/weapon/refill_cartridge/autoname/drink/sovietsoda, + /obj/item/weapon/refill_cartridge/autoname/drink/bepis, + /obj/item/weapon/refill_cartridge/autoname/cigarette, + /obj/item/weapon/refill_cartridge/multitype/wardrobe, + /obj/item/weapon/refill_cartridge/autoname/technical/assist, + /obj/item/weapon/refill_cartridge/autoname/technical/tool, + /obj/item/weapon/refill_cartridge/autoname/giftvendor) + name = "5-pack Extra-Cheap Vendor Refill Cartridges" + cost = 35 \ No newline at end of file diff --git a/code/datums/vending/stored_item.dm b/code/datums/vending/stored_item.dm index 0bf1c6bd5f..48162fa940 100644 --- a/code/datums/vending/stored_item.dm +++ b/code/datums/vending/stored_item.dm @@ -65,7 +65,12 @@ var/new_product = new item_path(stored) instances += new_product - +/datum/stored_item/proc/refill_products(var/refill_amount) + if(!instances) + init_products() + for(var/i = 1 to refill_amount) + var/new_product = new item_path(stored) + instances += new_product /datum/stored_item/stack/get_amount() return amount diff --git a/code/game/machinery/atmoalter/portable_atmospherics.dm b/code/game/machinery/atmoalter/portable_atmospherics.dm index e51b4825cc..6bdf71c525 100644 --- a/code/game/machinery/atmoalter/portable_atmospherics.dm +++ b/code/game/machinery/atmoalter/portable_atmospherics.dm @@ -15,9 +15,11 @@ /obj/machinery/portable_atmospherics/New() ..() - - air_contents.volume = volume - air_contents.temperature = T20C + //VOREStation Edit - Fix runtime + if(air_contents) + air_contents.volume = volume + air_contents.temperature = T20C + //VOREStation Edit End return 1 diff --git a/code/game/machinery/computer/arcade.dm b/code/game/machinery/computer/arcade.dm index 9919fc3ee4..b4f85da77d 100644 --- a/code/game/machinery/computer/arcade.dm +++ b/code/game/machinery/computer/arcade.dm @@ -8,8 +8,8 @@ /obj/item/toy/blink = 2, /obj/item/clothing/under/syndicate/tacticool = 2, /obj/item/toy/sword = 2, - /obj/item/weapon/gun/projectile/revolver/capgun = 2, - /obj/item/toy/crossbow = 2, + /obj/item/weapon/storage/box/capguntoy = 2, + /obj/item/weapon/gun/projectile/revolver/toy/crossbow = 2, /obj/item/clothing/suit/syndicatefake = 2, /obj/item/weapon/storage/fancy/crayons = 2, /obj/item/toy/spinningtoy = 2, diff --git a/code/game/machinery/computer/arcade_vr.dm b/code/game/machinery/computer/arcade_vr.dm index 210f31360f..cc5bd8fe74 100644 --- a/code/game/machinery/computer/arcade_vr.dm +++ b/code/game/machinery/computer/arcade_vr.dm @@ -3,8 +3,8 @@ /obj/item/toy/blink = 2, /obj/item/clothing/under/syndicate/tacticool = 2, /obj/item/toy/sword = 2, - /obj/item/weapon/gun/projectile/revolver/capgun = 2, - /obj/item/toy/crossbow = 2, + /obj/item/weapon/storage/box/capguntoy = 2, + /obj/item/weapon/gun/projectile/revolver/toy/crossbow = 2, /obj/item/clothing/suit/syndicatefake = 2, /obj/item/weapon/storage/fancy/crayons = 2, /obj/item/toy/spinningtoy = 2, diff --git a/code/game/objects/items/toys/mech_toys.dm b/code/game/objects/items/toys/mech_toys.dm index a8dd875f30..3fdb9c6659 100644 --- a/code/game/objects/items/toys/mech_toys.dm +++ b/code/game/objects/items/toys/mech_toys.dm @@ -2,7 +2,7 @@ * Mech toys (previously labeled prizes, but that's unintuitive) * Mech toy combat */ - + // Mech battle special attack types. #define SPECIAL_ATTACK_HEAL 1 #define SPECIAL_ATTACK_DAMAGE 2 @@ -17,7 +17,7 @@ icon_state = "ripleytoy" drop_sound = 'sound/mecha/mechstep.ogg' reach = 2 // So you can battle across the table! - + // Mech Battle Vars var/timer = 0 // Timer when it'll be off cooldown var/cooldown = 1.5 SECONDS // Cooldown between play sessions (and interactions) @@ -34,7 +34,7 @@ var/special_attack_cooldown = 0 // Current cooldown of their special attack var/wins = 0 // This mech's win count in combat var/losses = 0 // ...And their loss count in combat - + /obj/item/toy/mecha/Initialize() . = ..() desc = "Mini-Mecha action figure! Collect them all! Attack your friends or another mech with one to initiate epic mech combat! [desc]." @@ -58,7 +58,7 @@ return 0 //not in range and not telekinetic /** - * this proc combines "sleep" while also checking for if the battle should continue + * this proc combines "sleep" while also checking for if the battle should continue * * this goes through some of the checks - the toys need to be next to each other to fight! * if it's player vs themself: They need to be able to "control" both mechs (either must be adjacent or using TK). @@ -112,7 +112,7 @@ // If all that is good, then we can sleep peacefully. sleep(delay) return TRUE - + //all credit to skasi for toy mech fun ideas /obj/item/toy/mecha/attack_self(mob/user) if(timer < world.time) @@ -130,15 +130,15 @@ attack_self(user) /** - * If you attack a mech with a mech, initiate combat between them + * If you attack a mech with a mech, initiate combat between them */ /obj/item/toy/mecha/attackby(obj/item/user_toy, mob/living/user) - if(istype(user_toy, /obj/item/toy/mecha)) + if(istype(user_toy, /obj/item/toy/mecha)) var/obj/item/toy/mecha/M = user_toy if(check_battle_start(user, M)) mecha_brawl(M, user) ..() - + /** * Attack is called from the user's toy, aimed at target(another human), checking for target's toy. */ @@ -241,9 +241,9 @@ sleep(1 SECONDS) //--THE BATTLE BEGINS-- - while(combat_health > 0 && attacker.combat_health > 0 && battle_length < MAX_BATTLE_LENGTH) + while(combat_health > 0 && attacker.combat_health > 0 && battle_length < MAX_BATTLE_LENGTH) if(!combat_sleep(0.5 SECONDS, attacker, attacker_controller, opponent)) //combat_sleep checks everything we need to have checked for combat to continue - break + break //before we do anything - deal with charged attacks if(special_attack_charged) @@ -269,7 +269,7 @@ attacker.special_attack_charged = TRUE attacker_controller.visible_message(" [attacker] begins charging its special attack!! ", \ " You begin charging [attacker]'s special attack! ") - else //just attack + else //just attack attacker.SpinAnimation(5, 0) playsound(attacker, 'sound/mecha/mechstep.ogg', 30, TRUE) combat_health-- @@ -322,7 +322,7 @@ special_attack_charged = TRUE src_controller.visible_message(" [src] begins charging its special attack!! ", \ " You begin charging [src]'s special attack! ") - else //just attack + else //just attack SpinAnimation(5, 0) playsound(src, 'sound/mecha/mechstep.ogg', 30, TRUE) attacker.combat_health-- @@ -333,12 +333,12 @@ attacker.combat_health-- playsound(attacker, 'sound/effects/meteorimpact.ogg', 20, TRUE) src_controller.visible_message(" ...and lands a CRIPPLING BLOW! ", \ - " ...and you land a CRIPPLING blow on [attacker]! ", null) + " ...and you land a CRIPPLING blow on [attacker]! ", null) else attacker_controller.visible_message(" [src] and [attacker] stand around awkwardly.", \ - " You don't know what to do next.") + " You don't know what to do next.") - battle_length++ + battle_length++ sleep(0.5 SECONDS) /// Lines chosen for the winning mech @@ -347,7 +347,7 @@ if(attacker.combat_health <= 0 && combat_health <= 0) //both lose playsound(src, 'sound/machines/warning-buzzer.ogg', 20, TRUE) attacker_controller.visible_message(" MUTUALLY ASSURED DESTRUCTION!! [src] and [attacker] both end up destroyed!", \ - " Both [src] and [attacker] are destroyed!") + " Both [src] and [attacker] are destroyed!") else if(attacker.combat_health <= 0) //src wins wins++ attacker.losses++ @@ -359,7 +359,7 @@ " You raise up [src] victoriously over [attacker]!") else if (combat_health <= 0) //attacker wins attacker.wins++ - losses++ + losses++ playsound(src, 'sound/effects/light_flicker.ogg', 20, TRUE) src_controller.visible_message(" [src] collapses!", \ " [src] collapses!", null) @@ -374,7 +374,7 @@ in_combat = FALSE attacker.in_combat = FALSE - combat_health = max_combat_health + combat_health = max_combat_health attacker.combat_health = attacker.max_combat_health return @@ -382,49 +382,49 @@ /** * This proc checks if a battle can be initiated between src and attacker. * - * Both SRC and attacker (if attacker is included) timers are checked if they're on cooldown, and + * Both SRC and attacker (if attacker is included) timers are checked if they're on cooldown, and * both SRC and attacker (if attacker is included) are checked if they are in combat already. * If any of the above are true, the proc returns FALSE and sends a message to user (and target, if included) otherwise, it returns TRUE * Arguments: * * user: the user who is initiating the battle - * * attacker: optional arg for checking two mechs at once + * * attacker: optional arg for checking two mechs at once * * target: optional arg used in Mech PvP battles (if used, attacker is target's toy) */ -/obj/item/toy/mecha/proc/check_battle_start(mob/living/carbon/user, obj/item/toy/mecha/attacker, mob/living/carbon/target) - var/datum/gender/T +/obj/item/toy/mecha/proc/check_battle_start(mob/living/carbon/user, obj/item/toy/mecha/attacker, mob/living/carbon/target) + var/datum/gender/T if(target) T = gender_datums[target.get_visible_gender()] // Doing this because Polaris Code has shitty gender datums and it's clunkier than FUCK. if(attacker && attacker.in_combat) to_chat(user, "[target ? T.His : "Your" ] [attacker.name] is in combat.") - if(target) + if(target) to_chat(target, "Your [attacker.name] is in combat.") - return FALSE + return FALSE if(in_combat) to_chat(user, "Your [name] is in combat.") - if(target) + if(target) to_chat(target, "[T.His] [name] is in combat.") - return FALSE + return FALSE if(attacker && attacker.timer > world.time) to_chat(user, "[target?T.His : "Your" ] [attacker.name] isn't ready for battle.") - if(target) + if(target) to_chat(target, "Your [attacker.name] isn't ready for battle.") - return FALSE + return FALSE if(timer > world.time) to_chat(user, "Your [name] isn't ready for battle.") - if(target) + if(target) to_chat(target, "[T.His] [name] isn't ready for battle.") - return FALSE + return FALSE return TRUE /** - * Processes any special attack moves that happen in the battle (called in the mechaBattle proc). + * Processes any special attack moves that happen in the battle (called in the mechaBattle proc). * * Makes the toy shout their special attack cry and updates its cooldown. Then, does the special attack. * Arguments: * * victim - the toy being hit by the special move */ -/obj/item/toy/mecha/proc/special_attack_move(obj/item/toy/mecha/victim) +/obj/item/toy/mecha/proc/special_attack_move(obj/item/toy/mecha/victim) visible_message(special_attack_cry + "!!") special_attack_charged = FALSE @@ -447,15 +447,15 @@ visible_message("I FORGOT MY SPECIAL ATTACK...") /** - * Base proc for 'other' special attack moves. + * Base proc for 'other' special attack moves. * - * This one is only for inheritance, each mech with an 'other' type move has their procs below. + * This one is only for inheritance, each mech with an 'other' type move has their procs below. * Arguments: * * victim - the toy being hit by the super special move (doesn't necessarily need to be used) */ -/obj/item/toy/mecha/proc/super_special_attack(obj/item/toy/mecha/victim) +/obj/item/toy/mecha/proc/super_special_attack(obj/item/toy/mecha/victim) visible_message(" [src] does a cool flip.") - + /obj/random/mech_toy name = "Random Mech Toy" desc = "This is a random mech toy." @@ -488,8 +488,8 @@ special_attack_type = SPECIAL_ATTACK_OTHER special_attack_type_message = "instantly destroys the opposing mech if its health is less than this mech's health." special_attack_cry = "KILLER CLAMP" - -/obj/item/toy/mecha/deathripley/super_special_attack(obj/item/toy/mecha/victim) + +/obj/item/toy/mecha/deathripley/super_special_attack(obj/item/toy/mecha/victim) playsound(src, 'sound/weapons/sonic_jackhammer.ogg', 20, TRUE) if(victim.combat_health < combat_health) // Instantly kills the other mech if it's health is below our's. visible_message("EXECUTE!!") @@ -522,7 +522,7 @@ special_attack_type_message = "puts the opposing mech's special move on cooldown and heals this mech." special_attack_cry = "MEGA HORN" -/obj/item/toy/mecha/honk/super_special_attack(obj/item/toy/mecha/victim) +/obj/item/toy/mecha/honk/super_special_attack(obj/item/toy/mecha/victim) playsound(src, 'sound/machines/honkbot_evil_laugh.ogg', 20, TRUE) victim.special_attack_cooldown += 3 // Adds cooldown to the other mech and gives a minor self heal combat_health++ @@ -577,7 +577,7 @@ special_attack_type_message = "has a lower cooldown than normal special moves, increases the opponent's cooldown, and deals damage." special_attack_cry = "*wave" -/obj/item/toy/mecha/reticence/super_special_attack(obj/item/toy/mecha/victim) +/obj/item/toy/mecha/reticence/super_special_attack(obj/item/toy/mecha/victim) special_attack_cooldown-- //Has a lower cooldown... victim.special_attack_cooldown++ //and increases the opponent's cooldown by 1... victim.combat_health-- //and some free damage. diff --git a/code/game/objects/items/toys/toys.dm b/code/game/objects/items/toys/toys.dm index dc5a811a0e..0b1343d63e 100644 --- a/code/game/objects/items/toys/toys.dm +++ b/code/game/objects/items/toys/toys.dm @@ -3,8 +3,6 @@ * Balloons * Fake telebeacon * Fake singularity - * Toy gun - * Toy crossbow * Toy swords * Toy bosun's whistle * Snap pops @@ -145,127 +143,6 @@ icon = 'icons/obj/singularity.dmi' icon_state = "singularity_s1" -/* - * Toy crossbow - */ - -/obj/item/toy/crossbow - name = "foam dart crossbow" - desc = "A weapon favored by many overactive children. Ages 8 and up." - icon = 'icons/obj/gun.dmi' - icon_state = "crossbow" - item_icons = list( - icon_l_hand = 'icons/mob/items/lefthand_guns.dmi', - icon_r_hand = 'icons/mob/items/righthand_guns.dmi', - ) - slot_flags = SLOT_HOLSTER - w_class = ITEMSIZE_SMALL - attack_verb = list("attacked", "struck", "hit") - var/bullets = 5 - drop_sound = 'sound/items/drop/gun.ogg' - -/obj/item/toy/crossbow/examine(mob/user) - . = ..() - if(bullets && get_dist(user, src) <= 2) - . += "It is loaded with [bullets] foam darts!" - -/obj/item/toy/crossbow/attackby(obj/item/I as obj, mob/user as mob) - if(istype(I, /obj/item/toy/ammo/crossbow)) - if(bullets <= 4) - user.drop_item() - qdel(I) - bullets++ - to_chat(user, "You load the foam dart into the crossbow.") - else - to_chat(usr, "It's already fully loaded.") - - -/obj/item/toy/crossbow/afterattack(atom/target as mob|obj|turf|area, mob/user as mob, flag) - if(!isturf(target.loc) || target == user) return - if(flag) return - - if (locate (/obj/structure/table, src.loc)) - return - else if (bullets) - var/turf/trg = get_turf(target) - var/obj/effect/foam_dart_dummy/D = new/obj/effect/foam_dart_dummy(get_turf(src)) - bullets-- - D.icon_state = "foamdart" - D.name = "foam dart" - playsound(src, 'sound/items/syringeproj.ogg', 50, 1) - - for(var/i=0, i<6, i++) - if (D) - if(D.loc == trg) break - step_towards(D,trg) - - for(var/mob/living/M in D.loc) - if(!istype(M,/mob/living)) continue - if(M == user) continue - for(var/mob/O in viewers(world.view, D)) - O.show_message(text("\The [] was hit by the foam dart!", M), 1) - new /obj/item/toy/ammo/crossbow(M.loc) - qdel(D) - return - - for(var/atom/A in D.loc) - if(A == user) continue - if(A.density) - new /obj/item/toy/ammo/crossbow(A.loc) - qdel(D) - - sleep(1) - - spawn(10) - if(D) - new /obj/item/toy/ammo/crossbow(D.loc) - qdel(D) - - return - else if (bullets == 0) - user.Weaken(5) - for(var/mob/O in viewers(world.view, user)) - O.show_message(text("\The [] realized they were out of ammo and starting scrounging for some!", user), 1) - - -/obj/item/toy/crossbow/attack(mob/M as mob, mob/user as mob) - src.add_fingerprint(user) - -// ******* Check - - if (src.bullets > 0 && M.lying) - - for(var/mob/O in viewers(M, null)) - if(O.client) - O.show_message(text("\The [] casually lines up a shot with []'s head and pulls the trigger!", user, M), 1, "You hear the sound of foam against skull", 2) - O.show_message(text("\The [] was hit in the head by the foam dart!", M), 1) - - playsound(src, 'sound/items/syringeproj.ogg', 50, 1) - new /obj/item/toy/ammo/crossbow(M.loc) - src.bullets-- - else if (M.lying && src.bullets == 0) - for(var/mob/O in viewers(M, null)) - if (O.client) O.show_message(text("\The [] casually lines up a shot with []'s head, pulls the trigger, then realizes they are out of ammo and drops to the floor in search of some!", user, M), 1, "You hear someone fall", 2) - user.Weaken(5) - return - -/obj/item/toy/ammo/crossbow - name = "foam dart" - desc = "It's nerf or nothing! Ages 8 and up." - icon = 'icons/obj/toy.dmi' - icon_state = "foamdart" - w_class = ITEMSIZE_TINY - slot_flags = SLOT_EARS - drop_sound = 'sound/items/drop/food.ogg' - -/obj/effect/foam_dart_dummy - name = "" - desc = "" - icon = 'icons/obj/toy.dmi' - icon_state = "null" - anchored = TRUE - density = FALSE - /* * Toy swords */ @@ -394,7 +271,6 @@ /* * Bosun's whistle */ - /obj/item/toy/bosunwhistle name = "bosun's whistle" desc = "A genuine Admiral Krush Bosun's Whistle, for the aspiring ship's captain! Suitable for ages 8 and up, do not swallow." @@ -1526,7 +1402,7 @@ name = "black king" desc = "A black king chess piece." description_info = "The King can move exactly one square horizontally, vertically, or diagonally. If your opponent captures this piece, you lose." - icon_state = "black_king" + icon_state = "black_king" /// Balloon structures diff --git a/code/game/objects/items/toys/toys_vr.dm b/code/game/objects/items/toys/toys_vr.dm index 3884b0a17c..cb05e944cf 100644 --- a/code/game/objects/items/toys/toys_vr.dm +++ b/code/game/objects/items/toys/toys_vr.dm @@ -1,9 +1,42 @@ +/* Virgo Toys! + * Contains: + * Mistletoe + * Plushies + * Pet rocks + * Chew toys + * Cat toys + * Fake flash + * Big red button + * Garden gnome + * Toy AI + * Hand buzzer + * Toy cuffs + * Toy nuke + * Toy gibber + * Toy xeno + * Russian revolver + * Trick revolver + * Toy chainsaw + * Random miniature spawner + * Snake popper + * Professor Who universal ID + * Professor Who sonic driver + * Action figures + */ + + +/* + * Mistletoe + */ /obj/item/toy/mistletoe name = "mistletoe" desc = "You are supposed to kiss someone under these" icon = 'icons/obj/toy_vr.dmi' icon_state = "mistletoe" +/* + * Plushies + */ /obj/item/toy/plushie/lizardplushie name = "lizard plushie" desc = "An adorable stuffed toy that resembles a lizardperson." @@ -101,38 +134,6 @@ /obj/item/toy/plushie/vox/proc/cooldownreset() cooldown = 0 -/* -* 4/9/21 * -* IPC Plush -* Toaster plush -* Snake plush -* Cube plush -* Pip plush -* Moth plush -* Crab plush -* Possum plush -* Goose plush -* White mouse plush -* Pet rock -* Pet rock (m) -* Pet rock (f) -* Chew toys -* Cat toy * 2 -* Toy flash -* Toy button -* Gnome -* Toy AI -* Buzzer ring -* Fake handcuffs -* Nuke toy -* Toy gibber -* Toy xeno -* Fake gun * 2 -* Toy chainsaw -* Random tabletop miniature spawner -* snake popper -*/ - /obj/item/toy/plushie/ipc name = "IPC plushie" desc = "A pleasing soft-toy of a monitor-headed robot. Toaster functionality included." @@ -172,7 +173,6 @@ else return ..() - /obj/item/toy/plushie/ipc/attack_self(mob/user as mob) if(!cooldown) playsound(user, 'sound/machines/ping.ogg', 10, 0) @@ -274,7 +274,9 @@ /obj/item/toy/plushie/goose name = "goose plushie" - desc = "An adorable likeness of a terrifying beast. It's simple existance chills you to the bone and compells you to hide any loose objects it might steal." + desc = "An adorable likeness of a terrifying beast. \ + It's simple existance chills you to the bone and \ + compells you to hide any loose objects it might steal." icon = 'icons/obj/toy_vr.dmi' icon_state = "goose" attack_verb = list("honked") @@ -284,9 +286,54 @@ icon_state = "mouse" icon = 'icons/obj/toy_vr.dmi' +/obj/item/toy/plushie/susred + name = "red spaceman plushie" + desc = "A suspicious looking red spaceman plushie. Why does it smell like the vents?" + icon = 'icons/obj/toy_vr.dmi' + icon_state = "sus_red" + attack_verb = list("stabbed", "slashed") + +/obj/item/toy/plushie/ipc/toaster/attack_self(mob/user as mob) + if(!cooldown) + playsound(user, 'sound/weapons/slice.ogg', 10, 0) + src.visible_message("Stab!") + cooldown = 1 + addtimer(CALLBACK(src, .proc/cooldownreset), 50) + return ..() + +/obj/item/toy/plushie/susblue + name = "blue spaceman plushie" + desc = "A dapper looking blue spaceman plushie. Looks very intuitive." + icon = 'icons/obj/toy_vr.dmi' + icon_state = "sus_blue" + +/obj/item/toy/plushie/suswhite + name = "white spaceman plushie" + desc = "A whiny looking white spaceman plushie. Looks like it could cry at any moment." + icon = 'icons/obj/toy_vr.dmi' + icon_state = "sus_white" + +/obj/item/toy/plushie/bigcat + name = "big cat plushie" + desc = "A big, fluffy looking cat that just looks very huggable." + icon = 'icons/obj/toy_vr.dmi' + icon_state = "big_cat" + +/obj/item/toy/plushie/basset + name = "basset plushie" + desc = "A sleepy looking basset hound plushie." + icon = 'icons/obj/toy_vr.dmi' + icon_state = "basset" + +/* + * Pet rocks + */ /obj/item/toy/rock name = "pet rock" - desc = "A stuffed version of the classic pet. The soft ones were made after kids kept throwing them at each other. It has a small piece of soft plastic that you can draw on if you wanted." + desc = "A stuffed version of the classic pet. \ + The soft ones were made after kids kept throwing \ + them at each other. It has a small piece of soft \ + plastic that you can draw on if you wanted." icon = 'icons/obj/toy_vr.dmi' icon_state = "rock" attack_verb = list("grug'd", "unga'd") @@ -307,6 +354,9 @@ to_chat(user, "You draw a face on the rock and pull aside the plastic slightly, revealing a small pink bow.") return +/* + * Chew toys + */ /obj/item/toy/chewtoy name = "chew toy" desc = "A red hard-rubber chew toy shaped like a bone. Perfect for your dog! You wouldn't want to chew on it, right?" @@ -330,6 +380,9 @@ playsound(loc, 'sound/items/drop/plushie.ogg', 50, 1) user.visible_message("\The [user] gnaws on [src]!","You gnaw on [src]!") +/* + * Cat toys + */ /obj/item/toy/cat_toy name = "toy mouse" desc = "A colorful toy mouse!" @@ -349,6 +402,9 @@ slot_r_hand_str = 'icons/mob/items/righthand_material.dmi', ) +/* + * Fake flash + */ /obj/item/toy/flash name = "toy flash" desc = "FOR THE REVOLU- Oh wait, that's just a toy." @@ -374,6 +430,9 @@ /obj/item/toy/flash/proc/cooldownreset() cooldown = 0 +/* + * Big red button + */ /obj/item/toy/redbutton name = "big red button" desc = "A big, plastic red button. Reads 'From HonkCo Pranks?' on the back." @@ -394,12 +453,18 @@ else to_chat(user, "Nothing happens.") +/* + * Garden gnome + */ /obj/item/toy/gnome name = "garden gnome" desc = "It's a gnome, not a gnelf. Made of weak ceramic." icon = 'icons/obj/toy_vr.dmi' icon_state = "gnome" +/* + * Toy AI + */ /obj/item/toy/AI name = "toy AI" desc = "A little toy model AI core with real law announcing action!" @@ -434,6 +499,9 @@ /obj/item/toy/AI/proc/cooldownreset() cooldown = 0 +/* + * Hand buzzer + */ /obj/item/clothing/gloves/ring/buzzer/toy name = "steel ring" desc = "Torus shaped finger decoration. It has a small piece of metal on the palm-side." @@ -460,6 +528,9 @@ return 0 +/* + * Toy cuffs + */ /obj/item/weapon/handcuffs/fake name = "plastic handcuffs" desc = "Use this to keep plastic prisoners in line." @@ -484,6 +555,9 @@ foldable = null can_hold = list(/obj/item/weapon/handcuffs/fake, /obj/item/weapon/handcuffs/legcuffs/fake) +/* + * Toy nuke + */ /obj/item/toy/nuke name = "\improper Nuclear Fission Explosive toy" desc = "A plastic model of a Nuclear Fission Explosive." @@ -510,6 +584,9 @@ if(istype(I, /obj/item/weapon/disk/nuclear)) to_chat(user, "Nice try. Put that disk back where it belongs.") +/* + * Toy gibber + */ /obj/item/toy/minigibber name = "miniature gibber" desc = "A miniature recreation of NanoTrasen's famous meat grinder. Equipped with a special interlock that prevents insertion of organic material." @@ -547,6 +624,9 @@ else ..() +/* + * Toy xeno + */ /obj/item/toy/toy_xeno icon = 'icons/obj/toy_vr.dmi' icon_state = "xeno" @@ -571,6 +651,9 @@ to_chat(user, "The string on [src] hasn't rewound all the way!") return +/* + * Russian revolver + */ /obj/item/toy/russian_revolver name = "russian revolver" desc = "For fun and games!" @@ -641,6 +724,9 @@ to_chat(user, "[src] needs to be reloaded.") return FALSE +/* + * Trick revolver + */ /obj/item/toy/russian_revolver/trick_revolver name = "\improper .357 revolver" desc = "A suspicious revolver. Uses .357 ammo." @@ -668,6 +754,9 @@ sleep(5) icon_state = "[initial(icon_state)]" +/* + * Toy chainsaw + */ /obj/item/toy/chainsaw name = "Toy Chainsaw" desc = "A toy chainsaw with a rubber edge. Ages 8 and up" @@ -690,6 +779,9 @@ /obj/item/toy/chainsaw/proc/cooldownreset() cooldown = 0 +/* + * Random miniature spawner + */ /obj/random/miniature name = "Random miniature" desc = "This is a random miniature." @@ -699,6 +791,9 @@ /obj/random/miniature/item_to_spawn() return pick(typesof(/obj/item/toy/character)) +/* + * Snake popper + */ /obj/item/toy/snake_popper name = "bread tube" desc = "Bread in a tube. Chewy...and surprisingly tasty." @@ -775,3 +870,93 @@ real = 2 to_chat(user, "You short out the bluespace refill system of [src].") +/* + * Professor Who universal ID + */ +/obj/item/clothing/under/universalid + name = "identification card" + desc = "A novelty identification card based on Professor Who's Universal ID." + icon = 'icons/obj/toy_vr.dmi' + icon_state = "universal_id" + w_class = ITEMSIZE_TINY + slot_flags = SLOT_ID | SLOT_EARS + body_parts_covered = 0 + equip_sound = null + + sprite_sheets = null + + item_state = "golem" //This is dumb and hacky but was here when I got here. + worn_state = "golem" //It's basically just a coincidentally black iconstate in the file. + +/* + * Professor Who sonic driver + */ +/obj/item/weapon/tool/screwdriver/sdriver + name = "sonic driver" + desc = "A novelty screwdriver that uses tiny magnets to manipulate screws." + icon = 'icons/obj/toy_vr.dmi' + icon_state = "sonic_driver" + item_state = "screwdriver_black" + usesound = 'sound/items/sonic_driver.ogg' + toolspeed = 1 + random_color = FALSE + +/* + * Professor Who time capsule + */ +/obj/item/weapon/storage/box/timecap + name = "action time capsule" + desc = "A toy recreation of the Time Capsule from Professor Who. Can hold up to two action figures." + icon = 'icons/obj/toy_vr.dmi' + icon_state = "time_cap" + can_hold = list(/obj/item/toy/figure) + max_w_class = ITEMSIZE_TINY + max_storage_space = ITEMSIZE_COST_TINY * 2 + use_sound = 'sound/machines/click.ogg' + drop_sound = 'sound/items/drop/accessory.ogg' + pickup_sound = 'sound/items/pickup/accessory.ogg' + +/* + * Action figures + */ +/obj/item/toy/figure/ranger + name = "Space Ranger action figure" + desc = "A \"Space Life\" brand Space Ranger action figure." + icon = 'icons/obj/toy_vr.dmi' + icon_state = "ranger" + toysay = "To the Fontier and beyond!" + +/obj/item/toy/figure/leadbandit + name = "Bandit Leader action figure" + desc = "A \"Space Life\" brand Bandit Leader action figure." + icon = 'icons/obj/toy_vr.dmi' + icon_state = "bandit_lead" + toysay = "Give us yer bluespace crystals!" + +/obj/item/toy/figure/bandit + name = "Bandit action figure" + desc = "A \"Space Life\" brand Bandit action figure." + icon = 'icons/obj/toy_vr.dmi' + icon_state = "bandit" + toysay = "Stick em' up!" + +/obj/item/toy/figure/abe + name = "Action Abe action figure" + desc = "A \"Space Life\" brand Action Abe action figure." + icon = 'icons/obj/toy_vr.dmi' + icon_state = "action_abe" + toysay = "Four score and seven decades ago..." + +/obj/item/toy/figure/profwho + name = "Professor Who action figure" + desc = "A \"Space Life\" brand Professor Who action figure." + icon = 'icons/obj/toy_vr.dmi' + icon_state = "prof_who" + toysay = "Smells like... bad wolf..." + +/obj/item/toy/figure/prisoner + name = "prisoner action figure" + desc = "A \"Space Life\" brand prisoner action figure." + icon = 'icons/obj/toy_vr.dmi' + icon_state = "prisoner" + toysay = "I did not hit her! I did not!" diff --git a/code/game/objects/items/weapons/capture_crystal.dm b/code/game/objects/items/weapons/capture_crystal.dm index 5e492eec34..d9c4d79a3d 100644 --- a/code/game/objects/items/weapons/capture_crystal.dm +++ b/code/game/objects/items/weapons/capture_crystal.dm @@ -99,6 +99,10 @@ else if(bound_mob.client) to_chat(bound_mob, "\The [owner] wishes for you to follow them.") else if(bound_mob in contents) + if(!bound_mob.ai_holder) + to_chat(M, "\The [src] emits an unpleasant tone... \The [bound_mob] is not able to follow your command.") + playsound(src, 'sound/effects/capture-crystal-negative.ogg', 75, 1, -1) + return var/datum/ai_holder/AI = bound_mob.ai_holder if(AI.leader) to_chat(M, "\The [src] chimes~ \The [bound_mob] stopped following [AI.leader].") @@ -109,13 +113,17 @@ else if(!(bound_mob in view(M))) to_chat(M, "\The [src] emits an unpleasant tone... \The [bound_mob] is not able to hear your command.") playsound(src, 'sound/effects/capture-crystal-negative.ogg', 75, 1, -1) - var/datum/ai_holder/AI = bound_mob.ai_holder - if(AI.leader) - to_chat(M, "\The [src] chimes~ \The [bound_mob] stopped following [AI.leader].") - AI.lose_follow(AI.leader) - else - AI.set_follow(M) - to_chat(M, "\The [src] chimes~ \The [bound_mob] started following following [AI.leader].") + if(!bound_mob.ai_holder) + to_chat(M, "\The [src] emits an unpleasant tone... \The [bound_mob] is not able to follow your command.") + playsound(src, 'sound/effects/capture-crystal-negative.ogg', 75, 1, -1) + return + var/datum/ai_holder/AI = bound_mob.ai_holder + if(AI.leader) + to_chat(M, "\The [src] chimes~ \The [bound_mob] stopped following [AI.leader].") + AI.lose_follow(AI.leader) + else + AI.set_follow(M) + to_chat(M, "\The [src] chimes~ \The [bound_mob] started following following [AI.leader].") //Don't really want people 'haha funny' capturing and releasing one another willy nilly. So! If you wanna release someone, you gotta destroy the thingy. //(Which is consistent with how it works with digestion anyway.) diff --git a/code/game/objects/items/weapons/gift_wrappaper.dm b/code/game/objects/items/weapons/gift_wrappaper.dm index 285fba5bfd..d7fcb01fce 100644 --- a/code/game/objects/items/weapons/gift_wrappaper.dm +++ b/code/game/objects/items/weapons/gift_wrappaper.dm @@ -85,8 +85,8 @@ /obj/item/weapon/beach_ball/holoball, /obj/item/toy/balloon, /obj/item/toy/blink, - /obj/item/toy/crossbow, - /obj/item/weapon/gun/projectile/revolver/capgun, + /obj/item/weapon/gun/projectile/revolver/toy/crossbow, + /obj/item/weapon/storage/box/capguntoy, /obj/item/toy/katana, /obj/item/toy/mecha/deathripley, /obj/item/toy/mecha/durand, diff --git a/code/game/objects/items/weapons/shields_vr.dm b/code/game/objects/items/weapons/shields_vr.dm index 514ecd15c9..a311a74089 100644 --- a/code/game/objects/items/weapons/shields_vr.dm +++ b/code/game/objects/items/weapons/shields_vr.dm @@ -92,3 +92,11 @@ icon_state = "explorer_shield_P_lighted" else icon_state = "explorer_shield_P" + +/obj/item/weapon/shield/primitive + name = "primitive shield" + desc = "A defensive object that is little more than planks strapped your arm" + icon = 'icons/obj/weapons.dmi' + icon_state = "buckler" + w_class = ITEMSIZE_LARGE + base_block_chance = 30 diff --git a/code/game/objects/items/weapons/storage/belt.dm b/code/game/objects/items/weapons/storage/belt.dm index 9e82b6f434..96d0326654 100644 --- a/code/game/objects/items/weapons/storage/belt.dm +++ b/code/game/objects/items/weapons/storage/belt.dm @@ -123,11 +123,11 @@ ) /obj/item/weapon/storage/belt/utility/holding - name = "tool-belt of holding" + name = "tool-belt of holding" desc = "A belt that uses localized bluespace pockets to hold more items than expected!" icon_state = "utility_holding" storage_slots = 14 //twice the amount as a normal belt - max_storage_space = ITEMSIZE_COST_NORMAL * 14 + max_storage_space = ITEMSIZE_COST_NORMAL * 14 can_hold = list( /obj/item/weapon/tool/crowbar, /obj/item/weapon/tool/screwdriver, @@ -164,7 +164,7 @@ /obj/item/stack/material/steel, /obj/item/stack/material/glass, /obj/item/device/lightreplacer, - /obj/item/weapon/pickaxe/plasmacutter + /obj/item/weapon/pickaxe/plasmacutter ) @@ -207,11 +207,11 @@ icon_state = "ems" /obj/item/weapon/storage/belt/medical/holding - name = "medical belt of holding" + name = "medical belt of holding" desc = "A belt that uses localized bluespace pockets to hold more items than expected!" icon_state = "med_holding" storage_slots = 14 //twice the amount as a normal belt - max_storage_space = ITEMSIZE_COST_NORMAL * 14 + max_storage_space = ITEMSIZE_COST_NORMAL * 14 /obj/item/weapon/storage/belt/security name = "security belt" @@ -530,3 +530,12 @@ desc = "The fancy utility-belt holding the tools, cuffs and gadgets of the Go Go ERT-Rangers. The belt buckle is not real phoron, but it is still surprisingly comfortable to wear." icon = 'icons/obj/clothing/ranger.dmi' icon_state = "ranger_belt" + +/obj/item/weapon/storage/belt/dbandolier + name = "\improper Donk-Soft bandolier" + desc = "A Donk-Soft bandolier! Carry your spare darts anywhere! Ages 8 and up." + icon_state = "dbandolier" + storage_slots = 8 + can_hold = list( + /obj/item/ammo_casing/afoam_dart + ) \ No newline at end of file diff --git a/code/game/objects/items/weapons/storage/boxes.dm b/code/game/objects/items/weapons/storage/boxes.dm index abce195604..784942f5d7 100644 --- a/code/game/objects/items/weapons/storage/boxes.dm +++ b/code/game/objects/items/weapons/storage/boxes.dm @@ -568,3 +568,17 @@ name = "ambrosia deus seeds box" desc = "Contains the seeds you need to get a proper healthy high." starts_with = list(/obj/item/seeds/ambrosiadeusseed = 7) + +/obj/item/weapon/storage/box/capguntoy + name = "\improper AlliCo \"Zipper\" Cap Gun" + icon = 'icons/obj/gun_toy.dmi' + icon_state = "cap_gun_box" + desc = "This box is shaped on the inside so that only the \"Zipper\" Capgun and extra caps can fit." + item_state_slots = list(slot_r_hand_str = "syringe_kit", slot_l_hand_str = "syringe_kit") + storage_slots = 2 + max_w_class = ITEMSIZE_NORMAL + can_hold = list(/obj/item/weapon/gun/projectile/revolver/capgun, /obj/item/ammo_magazine/ammo_box/cap) + starts_with = list( + /obj/item/weapon/gun/projectile/revolver/capgun = 1, + /obj/item/ammo_magazine/ammo_box/cap = 1 + ) diff --git a/code/game/objects/random/gradient.dm b/code/game/objects/random/gradient.dm new file mode 100644 index 0000000000..e69de29bb2 diff --git a/code/game/objects/random/misc.dm b/code/game/objects/random/misc.dm index 7ee43a384f..e8c35c18a2 100644 --- a/code/game/objects/random/misc.dm +++ b/code/game/objects/random/misc.dm @@ -740,7 +740,7 @@ /obj/item/toy/snappop, /obj/item/toy/sword, /obj/item/toy/balloon, - /obj/item/toy/crossbow, + /obj/item/weapon/gun/projectile/revolver/toy/crossbow, /obj/item/toy/blink, /obj/item/weapon/reagent_containers/spray/waterflower, /obj/item/toy/eight_ball, diff --git a/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm b/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm index 5050fbcb80..10e57f2896 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm @@ -12,7 +12,7 @@ /obj/item/clothing/under/rank/chief_engineer/skirt, /obj/item/clothing/head/hardhat/white, /obj/item/clothing/head/welding, - /obj/item/clothing/gloves/yellow, + /obj/item/clothing/gloves/heavy_engineer, //VOREStation Edit: chief gets the good shit /obj/item/clothing/shoes/brown, /obj/item/weapon/cartridge/ce, /obj/item/device/radio/headset/heads/ce, diff --git a/code/game/objects/structures/crates_lockers/largecrate.dm b/code/game/objects/structures/crates_lockers/largecrate.dm index 2a626c52c9..6b338895e3 100644 --- a/code/game/objects/structures/crates_lockers/largecrate.dm +++ b/code/game/objects/structures/crates_lockers/largecrate.dm @@ -32,7 +32,7 @@ if(AM.simulated) AM.forceMove(T) //VOREStation Add Start - if(isanimal(AM)) + if(isanimal(AM)) var/mob/living/simple_mob/AMBLINAL = AM if(!AMBLINAL.mind) AMBLINAL.ghostjoin = 1 @@ -65,6 +65,11 @@ ME.attach(H) ..() +/obj/structure/largecrate/donksoftvendor + name = "\improper Donk-Soft vendor crate" + desc = "A hefty wooden crate displaying the logo of Donk-Soft. It's rather heavy." + starts_with = list(/obj/machinery/vending/donksoft) + /obj/structure/largecrate/vehicle name = "vehicle crate" desc = "Wulf Aeronautics says it comes in a box for the consumer's sake... How is this so light?" diff --git a/code/game/objects/structures/stool_bed_chair_nest/chairs.dm b/code/game/objects/structures/stool_bed_chair_nest/chairs.dm index 690164e265..5466582125 100644 --- a/code/game/objects/structures/stool_bed_chair_nest/chairs.dm +++ b/code/game/objects/structures/stool_bed_chair_nest/chairs.dm @@ -334,7 +334,7 @@ corner_piece = TRUE //color variations - +//Middle sofas first /obj/structure/bed/chair/sofa sofa_material = "carpet" @@ -379,92 +379,92 @@ /obj/structure/bed/chair/sofa/corner icon_state = "sofacorner" -/obj/structure/bed/chair/sofa/brown/left - icon_state = "sofaend_left" +/obj/structure/bed/chair/sofa/left/brown + sofa_material = "leather" -/obj/structure/bed/chair/sofa/brown/right - icon_state = "sofaend_right" +/obj/structure/bed/chair/sofa/right/brown + sofa_material = "leather" -/obj/structure/bed/chair/sofa/brown/corner - icon_state = "sofacorner" +/obj/structure/bed/chair/sofa/corner/brown + sofa_material = "leather" -/obj/structure/bed/chair/sofa/teal/left - icon_state = "sofaend_left" +/obj/structure/bed/chair/sofa/left/teal + sofa_material = "teal" -/obj/structure/bed/chair/sofa/teal/right - icon_state = "sofaend_right" +/obj/structure/bed/chair/sofa/right/teal + sofa_material = "teal" -/obj/structure/bed/chair/sofa/teal/corner - icon_state = "sofacorner" +/obj/structure/bed/chair/sofa/corner/teal + sofa_material = "teal" -/obj/structure/bed/chair/sofa/black/left - icon_state = "sofaend_left" +/obj/structure/bed/chair/sofa/left/black + sofa_material = "black" -/obj/structure/bed/chair/sofa/black/right - icon_state = "sofaend_right" +/obj/structure/bed/chair/sofa/right/black + sofa_material = "black" -/obj/structure/bed/chair/sofa/black/corner - icon_state = "sofacorner" +/obj/structure/bed/chair/sofa/corner/black + sofa_material = "black" -/obj/structure/bed/chair/sofa/green/left - icon_state = "sofaend_left" +/obj/structure/bed/chair/sofa/left/green + sofa_material = "green" -/obj/structure/bed/chair/sofa/green/right - icon_state = "sofaend_right" +/obj/structure/bed/chair/sofa/right/green + sofa_material = "green" -/obj/structure/bed/chair/sofa/green/corner - icon_state = "sofacorner" +/obj/structure/bed/chair/sofa/corner/green + sofa_material = "green" -/obj/structure/bed/chair/sofa/purp/left - icon_state = "sofaend_left" +/obj/structure/bed/chair/sofa/left/purp + sofa_material = "purple" -/obj/structure/bed/chair/sofa/purp/right - icon_state = "sofaend_right" +/obj/structure/bed/chair/sofa/right/purp + sofa_material = "purple" -/obj/structure/bed/chair/sofa/purp/corner - icon_state = "sofacorner" +/obj/structure/bed/chair/sofa/corner/purp + sofa_material = "purple" -/obj/structure/bed/chair/sofa/blue/left - icon_state = "sofaend_left" +/obj/structure/bed/chair/sofa/left/blue + sofa_material = "blue" -/obj/structure/bed/chair/sofa/blue/right - icon_state = "sofaend_right" +/obj/structure/bed/chair/sofa/right/blue + sofa_material = "blue" -/obj/structure/bed/chair/sofa/blue/corner - icon_state = "sofacorner" +/obj/structure/bed/chair/sofa/corner/blue + sofa_material = "blue" -/obj/structure/bed/chair/sofa/beige/left - icon_state = "sofaend_left" +/obj/structure/bed/chair/sofa/left/beige + sofa_material = "beige" -/obj/structure/bed/chair/sofa/beige/right - icon_state = "sofaend_right" +/obj/structure/bed/chair/sofa/right/beige + sofa_material = "beige" -/obj/structure/bed/chair/sofa/beige/corner - icon_state = "sofacorner" +/obj/structure/bed/chair/sofa/corner/beige + sofa_material = "beige" -/obj/structure/bed/chair/sofa/lime/left - icon_state = "sofaend_left" +/obj/structure/bed/chair/sofa/left/lime + sofa_material = "lime" -/obj/structure/bed/chair/sofa/lime/right - icon_state = "sofaend_right" +/obj/structure/bed/chair/sofa/right/lime + sofa_material = "lime" -/obj/structure/bed/chair/sofa/lime/corner - icon_state = "sofacorner" +/obj/structure/bed/chair/sofa/corner/lime + sofa_material = "lime" -/obj/structure/bed/chair/sofa/yellow/left - icon_state = "sofaend_left" +/obj/structure/bed/chair/sofa/left/yellow + sofa_material = "yellow" -/obj/structure/bed/chair/sofa/yellow/right - icon_state = "sofaend_right" +/obj/structure/bed/chair/sofa/right/yellow + sofa_material = "yellow" -/obj/structure/bed/chair/sofa/yellow/corner - icon_state = "sofacorner" +/obj/structure/bed/chair/sofa/corner/yellow + sofa_material = "yellow" -/obj/structure/bed/chair/sofa/orange/left - icon_state = "sofaend_left" +/obj/structure/bed/chair/sofa/left/orange + sofa_material = "orange" -/obj/structure/bed/chair/sofa/orange/right - icon_state = "sofaend_right" +/obj/structure/bed/chair/sofa/right/orange + sofa_material = "orange" -/obj/structure/bed/chair/sofa/orange/corner - icon_state = "sofacorner" +/obj/structure/bed/chair/sofa/corner/orange + sofa_material = "orange" diff --git a/code/game/objects/structures/trash_pile_vr.dm b/code/game/objects/structures/trash_pile_vr.dm index af759d6091..2c50bd968f 100644 --- a/code/game/objects/structures/trash_pile_vr.dm +++ b/code/game/objects/structures/trash_pile_vr.dm @@ -201,6 +201,7 @@ prob(2);/obj/item/toy/tennis/blue, prob(2);/obj/item/toy/tennis/purple, prob(1);/obj/item/clothing/glasses/sunglasses, + prob(1);/obj/item/clothing/glasses/sunglasses/bigshot, prob(1);/obj/item/clothing/glasses/welding, prob(1);/obj/item/clothing/gloves/yellow, prob(1);/obj/item/clothing/head/bio_hood/general, @@ -232,10 +233,11 @@ prob(4);/obj/item/weapon/storage/pill_bottle/happy, prob(4);/obj/item/weapon/storage/pill_bottle/zoom, prob(4);/obj/item/seeds/ambrosiavulgarisseed, - prob(4);/obj/item/weapon/gun/energy/sizegun, + prob(4);/obj/item/weapon/gun/energy/sizegun/old, prob(3);/obj/item/weapon/material/butterfly, prob(3);/obj/item/weapon/material/butterfly/switchblade, prob(3);/obj/item/clothing/gloves/knuckledusters, + prob(3);/obj/item/clothing/gloves/heavy_engineer, prob(3);/obj/item/weapon/reagent_containers/syringe/drugs, prob(2);/obj/item/weapon/implanter/sizecontrol, prob(2);/obj/item/weapon/handcuffs/fuzzy, diff --git a/code/modules/client/preference_setup/loadout/loadout_eyes_vr.dm b/code/modules/client/preference_setup/loadout/loadout_eyes_vr.dm index 6ec19f2fd8..9aae4969ef 100644 --- a/code/modules/client/preference_setup/loadout/loadout_eyes_vr.dm +++ b/code/modules/client/preference_setup/loadout/loadout_eyes_vr.dm @@ -65,3 +65,7 @@ /datum/gear/eyes/medical/medpatch display_name = "Health HUDpatch" path = /obj/item/clothing/glasses/hud/health/eyepatch + +/datum/gear/eyes/bigshot + display_name = "Big Shot's Glasses" + path = /obj/item/clothing/glasses/sunglasses/bigshot diff --git a/code/modules/client/preference_setup/loadout/loadout_fluffitems_vr.dm b/code/modules/client/preference_setup/loadout/loadout_fluffitems_vr.dm index 9f3a20f182..5953edb77b 100644 --- a/code/modules/client/preference_setup/loadout/loadout_fluffitems_vr.dm +++ b/code/modules/client/preference_setup/loadout/loadout_fluffitems_vr.dm @@ -886,6 +886,12 @@ ckeywhitelist = list("residentcody") character_name = list("Pathfinder") +/datum/gear/fluff/revolver_claymore + path = /obj/item/weapon/sword/fluff/revolver + display_name = "Catnip" + ckeywhitelist = list("revolvereloise") + character_name = list("Revolver Eloise") + /datum/gear/fluff/nikki_dorky_outfit path = /obj/item/weapon/storage/box/fluff display_name = "Nikki's Witchy Outfit" @@ -958,6 +964,20 @@ ckeywhitelist = list("scree") character_name = list("Scree") +/datum/gear/fluff/avida_dress + path = /obj/item/clothing/under/skirt/outfit/fluff/avida + display_name = "Avida's Dress" + slot = slot_w_uniform + ckeywhitelist = list("scree") + character_name = list("Avida") + +/datum/gear/fluff/avida_hat + path = /obj/item/clothing/head/fluff/avida + display_name = "Avida's Hat" + slot = slot_head + ckeywhitelist = list("scree") + character_name = list("Avida") + /datum/gear/fluff/alfonso_sunglasses path = /obj/item/clothing/glasses/sunglasses/fluff/alfonso display_name = "Alfonso's Sunglasses" @@ -1109,6 +1129,11 @@ character_name = list("Konor Foxe") // U CKEYS +/datum/gear/fluff/brad_jordans + path = /obj/item/clothing/shoes/fluff/airjordans + display_name = "Bradley's Air Jordans" + ckeywhitelist = list("unclefruitvevo") + character_name = list("Bradley Khatibi") // V CKEYS /datum/gear/fluff/verie_suit diff --git a/code/modules/clothing/glasses/glasses.dm b/code/modules/clothing/glasses/glasses.dm index b11f3423ab..05d1fd8aa9 100644 --- a/code/modules/clothing/glasses/glasses.dm +++ b/code/modules/clothing/glasses/glasses.dm @@ -342,6 +342,11 @@ BLIND // can't see anything desc = "A pair of designer sunglasses." icon_state = "aviator" +/obj/item/clothing/glasses/sunglasses/bigshot + name = "big shot's glasses" + desc = "A pair of glasses to help you feel more like a \[BIG SHOT]." + icon_state = "bigshot" + /obj/item/clothing/glasses/welding name = "welding goggles" desc = "Protects the eyes from welders, approved by the mad scientist association." diff --git a/code/modules/clothing/glasses/hud_vr.dm b/code/modules/clothing/glasses/hud_vr.dm index 6093034dd1..272d0863c8 100644 --- a/code/modules/clothing/glasses/hud_vr.dm +++ b/code/modules/clothing/glasses/hud_vr.dm @@ -90,10 +90,12 @@ if(icon_state == "glasses") to_chat(usr, "You darken the electrochromic lenses of \the [src] to one-way transparency.") name = "[initial(name)] (shaded, pr)" + flags_inv |= HIDEEYES icon_state = "sun" else if(icon_state == "sun") to_chat(usr, "You restore the electrochromic lenses of \the [src] to standard two-way transparency.") name = "[initial(name)] (pr)" + flags_inv &= ~HIDEEYES icon_state = "glasses" else to_chat(usr, "The [src] don't seem to support this functionality.") @@ -101,10 +103,12 @@ if(icon_state == "glasses") to_chat(usr, "You darken the electrochromic lenses of \the [src] to one-way transparency.") name = "[initial(name)] (shaded)" + flags_inv |= HIDEEYES icon_state = "sun" else if(icon_state == "sun") to_chat(usr, "You restore the electrochromic lenses of \the [src] to standard two-way transparency.") name = "[initial(name)]" + flags_inv &= ~HIDEEYES icon_state = "glasses" else to_chat(usr, "The [src] don't seem to support this functionality.") @@ -222,7 +226,7 @@
Offers full protection against bright flashes/welders and full access to system alarm monitoring." mode = "best" flash_protection = FLASH_PROTECTION_MAJOR - enables_planes = list(VIS_CH_ID,VIS_CH_HEALTH_VR,VIS_CH_STATUS_R,VIS_CH_BACKUP,VIS_CH_WANTED) + enables_planes = list(VIS_CH_ID,VIS_CH_HEALTH_VR,VIS_CH_STATUS_R,VIS_CH_BACKUP,VIS_CH_WANTED,VIS_AUGMENTED) action_button_name = "AR Console (All Alerts)" tgarscreen_path = /datum/tgui_module/alarm_monitor/all/glasses diff --git a/code/modules/clothing/gloves/miscellaneous_vr.dm b/code/modules/clothing/gloves/miscellaneous_vr.dm index 9fdca11aeb..2563575af0 100644 --- a/code/modules/clothing/gloves/miscellaneous_vr.dm +++ b/code/modules/clothing/gloves/miscellaneous_vr.dm @@ -59,4 +59,25 @@ desc = "ye olde armored gauntlets" name = "knight gauntlets" icon_state = "brown" - item_state = "brown" \ No newline at end of file + item_state = "brown" + +/obj/item/clothing/gloves/heavy_engineer + desc = "Elbow-length insulated gloves, with added reinforcement. They'll keep your fingers and forearms just that little bit safer from things that might try to melt, mangle, or burn them. A tag on the inside of each glove reads \'PROPERTY OF ENGINEERING, RETURN IF FOUND\'." + name = "heavy-duty engineering gloves" + icon_state = "heavy_engi" + item_state = "heavy_engi" + siemens_coefficient = 0 + permeability_coefficient = 0.05 + flags = THICKMATERIAL + armor = list(melee = 10, bullet = 10, laser = 10, energy = 5, bomb = 0, bio = 30, rad = 30) + icon = 'icons/inventory/hands/item_vr.dmi' + default_worn_icon = 'icons/inventory/hands/mob_vr.dmi' + sprite_sheets = list( + SPECIES_TESHARI = 'icons/inventory/hands/mob_vr_teshari.dmi', + SPECIES_VOX = 'icons/inventory/hands/mob_vr_vox.dmi', + SPECIES_WEREBEAST = 'icons/inventory/hands/mob_vr_werebeast.dmi') + + cold_protection = HANDS + min_cold_protection_temperature = GLOVES_MIN_COLD_PROTECTION_TEMPERATURE + heat_protection = HANDS + max_heat_protection_temperature = GLOVES_MAX_HEAT_PROTECTION_TEMPERATURE \ No newline at end of file diff --git a/code/modules/clothing/head/misc.dm b/code/modules/clothing/head/misc.dm index 0351e16fca..d299396f79 100644 --- a/code/modules/clothing/head/misc.dm +++ b/code/modules/clothing/head/misc.dm @@ -529,4 +529,27 @@ /obj/item/clothing/head/wheat name = "straw hat" desc = "It's a hat made from synthetic straw. Brought to you by \"Country Girls LLC.\" the choice brand for the galaxy's working class." - icon_state = "wheat" \ No newline at end of file + icon_state = "wheat" + +//Ruin Marine (Doom Marine) +/obj/item/clothing/head/marine + name = "marine helmet" + desc = "A marine helmet prop from the popular game 'Ruin'." + icon_state = "marine" + flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|BLOCKHAIR + body_parts_covered = HEAD|FACE|EYES + +//Laser Tag Helmets +/obj/item/clothing/head/bluetag + name = "blue laser tag helmet" + desc = "Blue Pride, Station Wide." + icon_state = "bluetag" + flags_inv = HIDEEARS|BLOCKHEADHAIR + body_parts_covered = HEAD|EYES + +/obj/item/clothing/head/redtag + name = "red laser tag helmet" + desc = "Reputed to go faster." + icon_state = "redtag" + flags_inv = HIDEEARS|BLOCKHEADHAIR + body_parts_covered = HEAD|EYES \ No newline at end of file diff --git a/code/modules/clothing/suits/miscellaneous.dm b/code/modules/clothing/suits/miscellaneous.dm index e18b594233..d1b08feacb 100644 --- a/code/modules/clothing/suits/miscellaneous.dm +++ b/code/modules/clothing/suits/miscellaneous.dm @@ -13,7 +13,7 @@ */ /obj/item/clothing/suit/bluetag - name = "blue laser tag armour" + name = "blue laser tag armor" desc = "Blue Pride, Station Wide." icon_state = "bluetag" item_state_slots = list(slot_r_hand_str = "tdblue", slot_l_hand_str = "tdblue") @@ -22,8 +22,13 @@ allowed = list (/obj/item/weapon/gun/energy/lasertag/blue) siemens_coefficient = 3.0 +/obj/item/clothing/suit/bluetag/sub + name = "Brigader Armor" + desc = "Repilca rmor commonly worn by Spacer Union Brigade members from the hit series Spacer Trail. Modified for Laser Tag (Blue Team)." + icon_state = "bluetag2" + /obj/item/clothing/suit/redtag - name = "red laser tag armour" + name = "red laser tag armor" desc = "Reputed to go faster." icon_state = "redtag" item_state_slots = list(slot_r_hand_str = "tdred", slot_l_hand_str = "tdred") @@ -32,6 +37,11 @@ allowed = list (/obj/item/weapon/gun/energy/lasertag/red) siemens_coefficient = 3.0 +/obj/item/clothing/suit/redtag/dom + name = "Mu'tu'bi Armor" + desc = "Repilca rmor commonly worn by Dominion Of Mu'tu'bi soldiers from the hit series Spacer Trail. Modified for Laser Tag (Red Team)." + icon_state = "redtag2" + /* * Costume */ @@ -993,3 +1003,12 @@ src.item_state = "caution" usr.show_message("You turn the wet floor sign off.") update_clothing_icon() + +//Ruin Marine (Doom Marine) +/obj/item/clothing/suit/marine + name = "marine armor" + desc = "A set of marine prop armor from the popular game 'Ruin'." + icon_state = "marine" + body_parts_covered = FEET|LOWER_TORSO|UPPER_TORSO|LEGS + flags_inv = HIDESHOES|HIDEJUMPSUIT|HIDETIE|HIDEHOLSTER + item_state_slots = list(slot_r_hand_str = "green_labcoat", slot_l_hand_str = "green_labcoat") diff --git a/code/modules/economy/vending.dm b/code/modules/economy/vending.dm index 09a9b480aa..f073f3f396 100644 --- a/code/modules/economy/vending.dm +++ b/code/modules/economy/vending.dm @@ -42,6 +42,10 @@ var/list/prices = list() // Prices for each item, list(/type/path = price), items not in the list don't have a price. /// Set automatically, enables pricing var/has_prices = FALSE + // This one is used for refill cartridge use. + var/list/refill = list() // For each, use the following pattern: + // Enables refilling with appropriate cartridges + var/refillable = TRUE // List of vending_product items available. var/list/product_records = list() @@ -126,12 +130,31 @@ GLOBAL_LIST_EMPTY(vending_products) if(LAZYLEN(premium)) has_premium = TRUE + + if(!LAZYLEN(refill) && refillable) // Manually setting refill list prevents the automatic population. By default filled with all entries from normal product. + refill += products + LAZYCLEARLIST(products) LAZYCLEARLIST(contraband) LAZYCLEARLIST(premium) LAZYCLEARLIST(prices) all_products.Cut() +/obj/machinery/vending/proc/refill_inventory() + if(!(LAZYLEN(refill))) //This shouldn't happen, but just in case... + return + + for(var/entry in refill) + var/datum/stored_item/vending_product/current_product + for(var/datum/stored_item/vending_product/product in product_records) + if(product.item_path == entry) + current_product = product + break + if(!current_product) + continue + else + current_product.refill_products(refill[entry]) + /obj/machinery/vending/Destroy() qdel(wires) wires = null @@ -170,6 +193,29 @@ GLOBAL_LIST_EMPTY(vending_products) if(I || istype(W, /obj/item/weapon/spacecash)) attack_hand(user) return + else if(istype(W, /obj/item/weapon/refill_cartridge)) + if(stat & (BROKEN|NOPOWER)) + to_chat(user, "You cannot refill [src] while it is not functioning.") + return + if(!anchored) + to_chat(user, "You cannot refill [src] while it is not secured.") + return + if(panel_open) + to_chat(user, "You cannot refill [src] while it's panel is open.") + return + if(!refillable) + to_chat(user, "\the [src] does not have a refill port.") + return + var/obj/item/weapon/refill_cartridge/RC = W + if(RC.can_refill(src)) + to_chat(user, "You refill [src] using [RC].") + user.drop_from_inventory(RC) + qdel(RC) + refill_inventory() + return + else + to_chat(user, "You cannot refill [src] with [RC].") + return else if(W.is_screwdriver()) panel_open = !panel_open to_chat(user, "You [panel_open ? "open" : "close"] the maintenance panel.") diff --git a/code/modules/economy/vending_machines.dm b/code/modules/economy/vending_machines.dm index 81a3201acc..d63857badf 100644 --- a/code/modules/economy/vending_machines.dm +++ b/code/modules/economy/vending_machines.dm @@ -395,7 +395,8 @@ /obj/item/stack/medical/advanced/bruise_pack = 6, /obj/item/stack/medical/advanced/ointment = 6, /obj/item/stack/medical/splint = 4, - /obj/item/weapon/storage/pill_bottle/carbon = 2) + /obj/item/weapon/storage/pill_bottle/carbon = 2, + /obj/item/clothing/mask/chewable/candy/lolli = 15) contraband = list(/obj/item/weapon/reagent_containers/pill/tox = 3, /obj/item/weapon/reagent_containers/pill/stox = 4, /obj/item/weapon/reagent_containers/pill/antitox = 6) @@ -633,7 +634,7 @@ /obj/item/device/flashlight/glowstick/yellow = 3) contraband = list(/obj/item/weapon/weldingtool/hugetank = 2, /obj/item/clothing/gloves/fyellow = 2) - premium = list(/obj/item/clothing/gloves/yellow = 1) + premium = list(/obj/item/clothing/gloves/heavy_engineer = 1) //VOREStation Edit - yellow gloves are common in engineering, let's make "premium" actually mean something req_log_access = access_ce has_logs = 1 @@ -1143,6 +1144,46 @@ idle_power_usage = 211 //refrigerator - believe it or not, this is actually the average power consumption of a refrigerated vending machine according to NRCan. vending_sound = "machines/vending/vending_cans.ogg" +///////////////////////Donk-Soft!/////////////////////////////////////// + +/obj/machinery/vending/donksoft + name = "Donk-Soft!" + desc = "A toy vendor owned by Donk-Soft, a NanoTrasen sub-company." + description_fluff = "Donk-Soft is a sub-company owned by NanoTrasen that distribute replica weapons that shoot squishy foam darts. \ + They've been a staple of personal entertainment for decades but their buisness has only just moved to the fringes of the galaxy." + icon_state = "donksoft" + product_slogans = "Get your cool toys today!;Quality toy weapons for cheap prices!" + product_ads = "Express your inner child today!;Who needs responsibilities when you have toy weapons?;Make your next murder FUN!" + products = list(/obj/item/ammo_magazine/ammo_box/foam = 20, + /obj/item/weapon/storage/belt/dbandolier = 5, + /obj/item/ammo_magazine/mfoam_dart/pistol = 10, + /obj/item/ammo_magazine/mfoam_dart/smg = 10, + /obj/item/weapon/gun/projectile/shotgun/pump/toy = 5, + /obj/item/weapon/gun/projectile/revolver/toy/sawnoff = 5, + /obj/item/weapon/gun/projectile/pistol/toy = 5, + /obj/item/weapon/gun/projectile/pistol/toy/n99 = 5, + /obj/item/weapon/gun/projectile/shotgun/pump/toy/levergun = 5, + /obj/item/weapon/gun/projectile/revolver/toy = 5, + /obj/item/weapon/gun/projectile/revolver/toy/big_iron = 5, + /obj/item/weapon/gun/projectile/revolver/toy/crossbow = 5, + /obj/item/weapon/gun/projectile/automatic/toy = 5 + ) + contraband = list() + prices = list(/obj/item/ammo_magazine/ammo_box/foam = 50, + /obj/item/weapon/storage/belt/dbandolier = 100, + /obj/item/ammo_magazine/mfoam_dart/pistol = 25, + /obj/item/ammo_magazine/mfoam_dart/smg = 25, + /obj/item/weapon/gun/projectile/shotgun/pump/toy = 250, + /obj/item/weapon/gun/projectile/revolver/toy/sawnoff = 150, + /obj/item/weapon/gun/projectile/pistol/toy = 100, + /obj/item/weapon/gun/projectile/pistol/toy/n99 = 175, + /obj/item/weapon/gun/projectile/shotgun/pump/toy/levergun = 250, + /obj/item/weapon/gun/projectile/revolver/toy = 100, + /obj/item/weapon/gun/projectile/revolver/toy/big_iron = 175, + /obj/item/weapon/gun/projectile/revolver/toy/crossbow = 75, + /obj/item/weapon/gun/projectile/automatic/toy = 300) + vending_sound = "machines/vending/vending_cans.ogg" + /* * Department/job vendors to sit in place of lockers taking up space */ diff --git a/code/modules/economy/vending_machines_vr.dm b/code/modules/economy/vending_machines_vr.dm index 90c7a8a157..92101336b8 100644 --- a/code/modules/economy/vending_machines_vr.dm +++ b/code/modules/economy/vending_machines_vr.dm @@ -23,6 +23,8 @@ /obj/item/clothing/glasses/omnihud/med = 4, /obj/item/device/glasses_kit = 1, /obj/item/weapon/storage/quickdraw/syringe_case = 4) ..() +// Food Machines (for event/away maps) + //I want this not just as part of the zoo. ;v /obj/machinery/vending/food name = "Food-O-Mat" @@ -234,20 +236,7 @@ contraband = list(/obj/item/weapon/reagent_containers/food/snacks/tofurkey = 10) vend_delay = 10 -//End of food event machines - -/* For later, then -/obj/machinery/vending/weapon_machine - name = "Frozen Star Guns&Ammo" - desc = "A self-defense equipment vending machine. When you need to take care of that clown." - product_slogans = "The best defense is good offense!;Buy for your whole family today!;Nobody can outsmart bullet!;God created man - Frozen Star made them EQUAL!;Nobody can outsmart bullet!;Stupidity can be cured! By LEAD.;Dead kids can't bully your children!" - product_ads = "Stunning!;Take justice in your own hands!;LEADearship!" - icon = 'icons/obj/vending_vr.dmi' - icon_state = "weapon" - products = list(/obj/item/device/flash = 6,/obj/item/weapon/reagent_containers/spray/pepper = 6, /obj/item/weapon/gun/projectile/olivaw = 5, /obj/item/weapon/gun/projectile/giskard = 5, /obj/item/ammo_magazine/mg/cl32/rubber = 20) - contraband = list(/obj/item/weapon/reagent_containers/food/snacks/syndicake = 6) - prices = list(/obj/item/device/flash = 600,/obj/item/weapon/reagent_containers/spray/pepper = 800, /obj/item/weapon/gun/projectile/olivaw = 1600, /obj/item/weapon/gun/projectile/giskard = 1200, /obj/item/ammo_magazine/mg/cl32/rubber = 200) -*/ +// Food Machines (for event/away maps) /obj/machinery/vending/fitness/New() products += list(/obj/item/weapon/reagent_containers/food/snacks/liquidprotein = 8) @@ -271,6 +260,98 @@ req_log_access = access_cmo has_logs = 1 +//Airlock antitox vendor +/obj/machinery/vending/wallmed_airlock + name = "Airlock NanoMed" + desc = "Wall-mounted Medical Equipment dispenser. This limited-use version dispenses antitoxins with mild painkillers for surface EVAs." + icon_state = "wallmed" + density = 0 //It is wall-mounted, and thus, not dense. --Superxpdude + products = list(/obj/item/weapon/reagent_containers/pill/airlock = 20) + contraband = list(/obj/item/weapon/reagent_containers/pill/tox = 2) + req_log_access = access_cmo + has_logs = 1 + +/obj/machinery/seed_storage/brig + name = "Prisoners' food seed storage" + starting_seeds = list( + /obj/item/seeds/appleseed = 3, + /obj/item/seeds/bananaseed = 3, + /obj/item/seeds/berryseed = 3, + /obj/item/seeds/cabbageseed = 3, + /obj/item/seeds/carrotseed = 3, + /obj/item/seeds/celery = 3, + /obj/item/seeds/chantermycelium = 3, + /obj/item/seeds/cherryseed = 3, + /obj/item/seeds/chiliseed = 3, + /obj/item/seeds/cocoapodseed = 3, + /obj/item/seeds/cornseed = 3, + /obj/item/seeds/durian = 3, + /obj/item/seeds/eggplantseed = 3, + /obj/item/seeds/grapeseed = 3, + /obj/item/seeds/grassseed = 3, + /obj/item/seeds/replicapod = 3, + /obj/item/seeds/lavenderseed = 3, + /obj/item/seeds/lemonseed = 3, + /obj/item/seeds/lettuce = 3, + /obj/item/seeds/limeseed = 3, + /obj/item/seeds/mtearseed = 2, + /obj/item/seeds/orangeseed = 3, + /obj/item/seeds/onionseed = 3, + /obj/item/seeds/peanutseed = 3, + /obj/item/seeds/plumpmycelium = 3, + /obj/item/seeds/poppyseed = 3, + /obj/item/seeds/potatoseed = 3, + /obj/item/seeds/pumpkinseed = 3, + /obj/item/seeds/rhubarb = 3, + /obj/item/seeds/riceseed = 3, + /obj/item/seeds/rose = 3, + /obj/item/seeds/soyaseed = 3, + /obj/item/seeds/pineapple = 3, + /obj/item/seeds/sugarcaneseed = 3, + /obj/item/seeds/sunflowerseed = 3, + /obj/item/seeds/shandseed = 2, + /obj/item/seeds/tobaccoseed = 3, + /obj/item/seeds/tomatoseed = 3, + /obj/item/seeds/towermycelium = 3, + /obj/item/seeds/vanilla = 3, + /obj/item/seeds/watermelonseed = 3, + /obj/item/seeds/wheatseed = 3, + /obj/item/seeds/whitebeetseed = 3, + /obj/item/seeds/wabback = 2) + +/obj/machinery/vending/hydronutrients/brig + name = "Brig NutriMax" + desc = "A plant nutrients vendor. Seems some items aren't included." + products = list(/obj/item/weapon/reagent_containers/glass/bottle/eznutrient = 6,/obj/item/weapon/reagent_containers/glass/bottle/left4zed = 4,/obj/item/weapon/reagent_containers/glass/bottle/robustharvest = 3,/obj/item/weapon/plantspray/pests = 20, + /obj/item/weapon/reagent_containers/glass/beaker = 4,/obj/item/weapon/storage/bag/plants = 5) + premium = list(/obj/item/weapon/reagent_containers/glass/bottle/ammonia = 10,/obj/item/weapon/reagent_containers/glass/bottle/diethylamine = 5) + +/obj/machinery/vending/abductor + name = "Abduct-U" + desc = "A mysterious machine which can fabricate many tools for acquiring test subjects." + icon = 'icons/obj/abductor_vr.dmi' + icon_state = "dispenser_2way" + products = list(/obj/item/weapon/card/id/syndicate/station_access = 1, + /obj/item/weapon/storage/box/syndie_kit/chameleon = 1, + /obj/item/clothing/mask/bandana = 1, + /obj/item/clothing/glasses/sunglasses = 1, + /obj/item/device/radio/headset/syndicate/alt = 1, + /obj/item/device/pda = 1, + /obj/item/device/communicator = 1, + /obj/item/weapon/tape_roll = 2, + /obj/item/weapon/handcuffs = 4, + /obj/item/weapon/handcuffs/legcuffs = 4, + /obj/item/weapon/cell/device/weapon/recharge/alien = 2, + /obj/item/device/chameleon = 1, + /obj/item/weapon/storage/mre/menu11 = 2, + /obj/item/device/flash = 2, + /obj/item/weapon/pen/reagent/paralysis = 4, + /obj/item/device/perfect_tele/alien = 1 + ) + vend_delay = 15 + +// Loadout Vending Machines Start + /obj/machinery/vending/loadout name = "Fingers and Toes" desc = "A special vendor for gloves and shoes!" @@ -1012,1280 +1093,6 @@ premium = list(/obj/item/clothing/under/color/rainbow = 1) contraband = list(/obj/item/clothing/under/rank/clown = 1) -//////////////////START OF CHIPS CO. VENDORS////////////////// - -/obj/machinery/vending/loadout/gadget - name = "Chips Co." - desc = "A special vendor for devices and gadgets." - product_ads = "You can't RESIST our great deals!;Feeling disconnected? We have a gadget for you!;You know you have the capacity to buy our capacitors!;FILL THAT HOLE IN YOUR HEART WITH OUR PLASTIC DISTRACTIONS!!!;Devices for everyone! Chips Co.!;ROBUST INVENTORY, GREAT PRICES! ;DON'T FORGET THE oyPAD 13s PRO! ON SALE NOW, ONLY ONE THOUSAND THALERS!" - icon_state = "gadgets" - vend_delay = 11 - products = list(/obj/item/clothing/suit/circuitry = 1, - /obj/item/clothing/head/circuitry = 1, - /obj/item/clothing/shoes/circuitry = 1, - /obj/item/clothing/gloves/circuitry = 1, - /obj/item/clothing/under/circuitry = 1, - /obj/item/clothing/glasses/circuitry = 1, - /obj/item/clothing/ears/circuitry = 1, - /obj/item/device/text_to_speech = 5, - /obj/item/device/paicard = 5, - /obj/item/device/communicator = 10, - /obj/item/device/communicator/watch = 10, - /obj/item/device/radio = 10, - /obj/item/device/camera = 5, - /obj/item/device/taperecorder = 5, - /obj/item/modular_computer/tablet/preset/custom_loadout/cheap = 5, - /obj/item/device/pda = 10, - /obj/item/device/radio/headset = 10, - /obj/item/device/flashlight = 5, - /obj/item/device/laser_pointer = 3, - /obj/item/clothing/glasses/omnihud = 10, - /obj/item/device/walkpod = 5, - /obj/item/device/juke_remote = 1, - /obj/item/instrument/piano_synth/headphones = 2, // You're making a subsystem do work, I don't want it TOO busy - /obj/item/instrument/piano_synth/headphones/spacepods = 2, - /obj/item/clothing/gloves/bluespace = 5) - prices = list(/obj/item/clothing/suit/circuitry = 100, - /obj/item/clothing/head/circuitry = 100, - /obj/item/clothing/shoes/circuitry = 100, - /obj/item/clothing/gloves/circuitry = 100, - /obj/item/clothing/under/circuitry = 100, - /obj/item/clothing/glasses/circuitry = 100, - /obj/item/clothing/ears/circuitry = 100, - /obj/item/device/text_to_speech = 300, - /obj/item/device/paicard = 100, - /obj/item/device/communicator = 100, - /obj/item/device/communicator/watch = 100, - /obj/item/device/radio = 100, - /obj/item/device/camera = 100, - /obj/item/device/taperecorder = 100, - /obj/item/modular_computer/tablet/preset/custom_loadout/cheap = 1000, - /obj/item/device/pda = 50, - /obj/item/device/radio/headset = 50, - /obj/item/device/flashlight = 100, - /obj/item/device/laser_pointer = 200, - /obj/item/clothing/glasses/omnihud = 100, - /obj/item/device/walkpod = 300, - /obj/item/device/juke_remote = 1000, - /obj/item/instrument/piano_synth/headphones = 200, - /obj/item/instrument/piano_synth/headphones/spacepods = 600, - /obj/item/clothing/gloves/bluespace = 500) - premium = list(/obj/item/device/perfect_tele/one_beacon = 1) - contraband = list(/obj/item/weapon/disk/nifsoft/compliance = 1) - -/obj/machinery/vending/event/gadget //FOR FACILITATING AND EQUIPPING EVENTS, DO NOT PLACE ON THE NORMAL MAP// - name = "Chips Co." - desc = "A special vendor for devices and gadgets." - product_ads = "You can't RESIST our great deals!;Feeling disconnected? We have a gadget for you!;You know you have the capacity to buy our capacitors!;FILL THAT HOLE IN YOUR HEART WITH OUR PLASTIC DISTRACTIONS!!!;Devices for everyone! Chips Co.!;ROBUST INVENTORY, GREAT PRICES! ;DON'T FORGET THE oyPAD 13s PRO! ON SALE NOW, ONLY ONE THOUSAND THALERS!" - icon_state = "gadgets" - vend_delay = 11 - products = list(/obj/item/clothing/suit/circuitry = 1, - /obj/item/clothing/head/circuitry = 1, - /obj/item/clothing/shoes/circuitry = 1, - /obj/item/clothing/gloves/circuitry = 1, - /obj/item/clothing/under/circuitry = 1, - /obj/item/clothing/glasses/circuitry = 1, - /obj/item/clothing/ears/circuitry = 1, - /obj/item/device/text_to_speech = 5, - /obj/item/device/paicard = 5, - /obj/item/device/communicator = 10, - /obj/item/device/communicator/watch = 10, - /obj/item/device/radio = 10, - /obj/item/device/camera = 5, - /obj/item/device/taperecorder = 5, - /obj/item/modular_computer/tablet/preset/custom_loadout/cheap = 5, - /obj/item/device/pda = 10, - /obj/item/device/radio/headset = 10, - /obj/item/device/flashlight = 5, - /obj/item/device/laser_pointer = 3, - /obj/item/clothing/glasses/omnihud = 10, - /obj/item/device/perfect_tele/one_beacon = 1, - /obj/item/weapon/disk/nifsoft/compliance = 1, - /obj/item/device/perfect_tele/alien = 10) - -//////////////////END OF CHIPS CO. VENDORS////////////////// - -/obj/machinery/vending/loadout/loadout_misc - name = "Bits and Bobs" - desc = "A special vendor for things and also stuff!" - product_ads = "You never know when you might need an umbrella.;Hey kid... want some cardemon cards?;Miscellaneous for your miscellaneous heart.;Who's bob? Wouldn't you like to know.;I'm sorry there's no grappling hooks in our umbrellas.;We sell things AND stuff." - icon_state = "loadout_misc" - products = list(/obj/item/weapon/cane = 5, - /obj/item/weapon/pack/cardemon = 25, - /obj/item/weapon/deck/holder = 5, - /obj/item/weapon/deck/cah = 5, - /obj/item/weapon/deck/cah/black = 5, - /obj/item/weapon/deck/tarot = 5, - /obj/item/weapon/deck/cards = 5, - /obj/item/weapon/pack/spaceball = 10, - /obj/item/weapon/storage/pill_bottle/dice = 5, - /obj/item/weapon/storage/pill_bottle/dice_nerd = 5, - /obj/item/weapon/melee/umbrella/random = 10) - prices = list(/obj/item/weapon/cane = 100, - /obj/item/weapon/pack/cardemon = 100, - /obj/item/weapon/deck/holder = 100, - /obj/item/weapon/deck/cah = 100, - /obj/item/weapon/deck/cah/black = 100, - /obj/item/weapon/deck/tarot = 100, - /obj/item/weapon/deck/cards = 100, - /obj/item/weapon/pack/spaceball = 100, - /obj/item/weapon/storage/pill_bottle/dice = 100, - /obj/item/weapon/storage/pill_bottle/dice_nerd = 100, - /obj/item/weapon/melee/umbrella/random = 100) - premium = list(/obj/item/toy/bosunwhistle = 1) - contraband = list(/obj/item/toy/katana = 1) - -/obj/machinery/vending/loadout/overwear - name = "Big D's Best" - desc = "A special vendor using compressed matter cartridges to store large amounts of overwear!" - product_ads = "Dress your best! It's what big D would want.;Overwear for all occasions!;Big D has what you need if what you need is some form of jacket!;Need a new hoodie? Bid D has you covered.;Big D says you need a new suit!;Big D smiles when he sees you in one of his coats!" - icon_state = "suit" - vend_delay = 16 - products = list(/obj/item/clothing/suit/storage/toggle/labcoat/old = 100, - /obj/item/clothing/suit/storage/apron = 5, - /obj/item/clothing/suit/storage/flannel/aqua = 5, - /obj/item/clothing/suit/storage/toggle/bomber = 5, - /obj/item/clothing/suit/storage/bomber/alt = 5, - /obj/item/clothing/suit/storage/flannel/brown = 5, - /obj/item/clothing/suit/storage/toggle/cardigan = 5, - /obj/item/clothing/accessory/poncho/roles/cloak/custom = 5, - /obj/item/clothing/suit/storage/duster = 5, - /obj/item/clothing/suit/storage/toggle/denim_jacket = 5, - /obj/item/clothing/suit/storage/toggle/denim_jacket/nanotrasen = 5, - /obj/item/clothing/suit/storage/toggle/denim_jacket/sleeveless = 5, - /obj/item/clothing/suit/storage/toggle/denim_jacket/nanotrasen/sleeveless = 5, - /obj/item/clothing/suit/storage/fluff/gntop = 5, - /obj/item/clothing/suit/greatcoat = 5, - /obj/item/clothing/suit/storage/flannel = 5, - /obj/item/clothing/suit/storage/greyjacket = 5, - /obj/item/clothing/suit/storage/hazardvest = 5, - /obj/item/clothing/suit/storage/toggle/hoodie/black = 5, - /obj/item/clothing/suit/storage/toggle/hoodie/red = 5, - /obj/item/clothing/suit/storage/toggle/hoodie/blue = 5, - /obj/item/clothing/suit/storage/toggle/hoodie/green = 5, - /obj/item/clothing/suit/storage/toggle/hoodie/orange = 5, - /obj/item/clothing/suit/storage/toggle/hoodie/yellow = 5, - /obj/item/clothing/suit/storage/toggle/hoodie/cti = 5, - /obj/item/clothing/suit/storage/toggle/hoodie/mu = 5, - /obj/item/clothing/suit/storage/toggle/hoodie/nt = 5, - /obj/item/clothing/suit/storage/toggle/hoodie/smw = 5, - /obj/item/clothing/suit/storage/toggle/hoodie/nrti = 5, - /obj/item/clothing/suit/storage/fluff/jacket/field = 5, - /obj/item/clothing/suit/storage/fluff/jacket/air_cavalry = 5, - /obj/item/clothing/suit/storage/fluff/jacket/air_force = 5, - /obj/item/clothing/suit/storage/fluff/jacket/navy = 5, - /obj/item/clothing/suit/storage/fluff/jacket/special_forces = 5, - /obj/item/clothing/suit/kamishimo = 5, - /obj/item/clothing/suit/kimono = 5, - /obj/item/clothing/suit/storage/toggle/labcoat = 5, - /obj/item/clothing/suit/storage/toggle/labcoat/blue = 5, - /obj/item/clothing/suit/storage/toggle/labcoat/blue_edge = 5, - /obj/item/clothing/suit/storage/toggle/labcoat/green = 5, - /obj/item/clothing/suit/storage/toggle/labcoat/orange = 5, - /obj/item/clothing/suit/storage/toggle/labcoat/pink = 5, - /obj/item/clothing/suit/storage/toggle/labcoat/red = 5, - /obj/item/clothing/suit/storage/toggle/labcoat/yellow = 5, - /obj/item/clothing/suit/leathercoat = 5, - /obj/item/clothing/suit/storage/toggle/leather_jacket = 5, - /obj/item/clothing/suit/storage/leather_jacket_alt = 5, - /obj/item/clothing/suit/storage/toggle/brown_jacket = 5, - /obj/item/clothing/suit/storage/toggle/leather_jacket/nanotrasen = 5, - /obj/item/clothing/suit/storage/toggle/brown_jacket/nanotrasen = 5, - /obj/item/clothing/suit/storage/toggle/leather_jacket/sleeveless = 5, - /obj/item/clothing/suit/storage/toggle/brown_jacket/sleeveless = 5, - /obj/item/clothing/suit/storage/toggle/leather_jacket/nanotrasen/sleeveless = 5, - /obj/item/clothing/suit/storage/toggle/brown_jacket/nanotrasen/sleeveless = 5, - /obj/item/clothing/suit/storage/miljacket = 5, - /obj/item/clothing/suit/storage/miljacket/alt = 5, - /obj/item/clothing/suit/storage/miljacket/green = 5, - /obj/item/clothing/suit/storage/apron/overalls = 5, - /obj/item/clothing/suit/storage/toggle/peacoat = 5, - /obj/item/clothing/accessory/poncho = 5, - /obj/item/clothing/accessory/poncho/green = 5, - /obj/item/clothing/accessory/poncho/red = 5, - /obj/item/clothing/accessory/poncho/purple = 5, - /obj/item/clothing/accessory/poncho/blue = 5, - /obj/item/clothing/suit/jacket/puffer = 5, - /obj/item/clothing/suit/jacket/puffer/vest = 5, - /obj/item/clothing/suit/storage/flannel/red = 5, - /obj/item/clothing/suit/unathi/robe = 5, - /obj/item/clothing/suit/storage/hooded/wintercoat/snowsuit = 5, - /obj/item/clothing/suit/storage/toggle/internalaffairs = 5, - /obj/item/clothing/suit/storage/toggle/lawyer/bluejacket = 5, - /obj/item/clothing/suit/storage/toggle/lawyer/purpjacket = 5, - /obj/item/clothing/suit/suspenders = 5, - /obj/item/clothing/suit/storage/toggle/track = 5, - /obj/item/clothing/suit/storage/toggle/track/blue = 5, - /obj/item/clothing/suit/storage/toggle/track/green = 5, - /obj/item/clothing/suit/storage/toggle/track/red = 5, - /obj/item/clothing/suit/storage/toggle/track/white = 5, - /obj/item/clothing/suit/storage/trench = 5, - /obj/item/clothing/suit/storage/trench/grey = 5, - /obj/item/clothing/suit/varsity = 5, - /obj/item/clothing/suit/varsity/red = 5, - /obj/item/clothing/suit/varsity/purple = 5, - /obj/item/clothing/suit/varsity/green = 5, - /obj/item/clothing/suit/varsity/blue = 5, - /obj/item/clothing/suit/varsity/brown = 5, - /obj/item/clothing/suit/storage/hooded/wintercoat = 5, - /obj/item/clothing/suit/storage/hooded/wintercoat/aformal = 5, - /obj/item/clothing/suit/storage/teshari/cloak/standard/white_grey = 5) - prices = list(/obj/item/clothing/suit/storage/apron = 100, - /obj/item/clothing/suit/storage/flannel/aqua = 100, - /obj/item/clothing/suit/storage/toggle/bomber = 100, - /obj/item/clothing/suit/storage/bomber/alt = 100, - /obj/item/clothing/suit/storage/flannel/brown = 100, - /obj/item/clothing/suit/storage/toggle/cardigan = 100, - /obj/item/clothing/accessory/poncho/roles/cloak/custom = 100, - /obj/item/clothing/suit/storage/duster = 100, - /obj/item/clothing/suit/storage/toggle/denim_jacket = 100, - /obj/item/clothing/suit/storage/toggle/denim_jacket/nanotrasen = 100, - /obj/item/clothing/suit/storage/toggle/denim_jacket/sleeveless = 100, - /obj/item/clothing/suit/storage/toggle/denim_jacket/nanotrasen/sleeveless = 100, - /obj/item/clothing/suit/storage/fluff/gntop = 100, - /obj/item/clothing/suit/greatcoat = 100, - /obj/item/clothing/suit/storage/flannel = 100, - /obj/item/clothing/suit/storage/greyjacket = 100, - /obj/item/clothing/suit/storage/hazardvest = 100, - /obj/item/clothing/suit/storage/toggle/hoodie/black = 100, - /obj/item/clothing/suit/storage/toggle/hoodie/red = 100, - /obj/item/clothing/suit/storage/toggle/hoodie/blue = 100, - /obj/item/clothing/suit/storage/toggle/hoodie/green = 100, - /obj/item/clothing/suit/storage/toggle/hoodie/orange = 100, - /obj/item/clothing/suit/storage/toggle/hoodie/yellow = 100, - /obj/item/clothing/suit/storage/toggle/hoodie/cti = 100, - /obj/item/clothing/suit/storage/toggle/hoodie/mu = 100, - /obj/item/clothing/suit/storage/toggle/hoodie/nt = 100, - /obj/item/clothing/suit/storage/toggle/hoodie/smw = 100, - /obj/item/clothing/suit/storage/toggle/hoodie/nrti = 100, - /obj/item/clothing/suit/storage/fluff/jacket/field = 100, - /obj/item/clothing/suit/storage/fluff/jacket/air_cavalry = 100, - /obj/item/clothing/suit/storage/fluff/jacket/air_force = 100, - /obj/item/clothing/suit/storage/fluff/jacket/navy = 100, - /obj/item/clothing/suit/storage/fluff/jacket/special_forces = 100, - /obj/item/clothing/suit/kamishimo = 100, - /obj/item/clothing/suit/kimono = 100, - /obj/item/clothing/suit/storage/toggle/labcoat = 100, - /obj/item/clothing/suit/storage/toggle/labcoat/blue = 100, - /obj/item/clothing/suit/storage/toggle/labcoat/blue_edge = 100, - /obj/item/clothing/suit/storage/toggle/labcoat/green = 100, - /obj/item/clothing/suit/storage/toggle/labcoat/orange = 100, - /obj/item/clothing/suit/storage/toggle/labcoat/pink = 100, - /obj/item/clothing/suit/storage/toggle/labcoat/red = 100, - /obj/item/clothing/suit/storage/toggle/labcoat/yellow = 100, - /obj/item/clothing/suit/leathercoat = 100, - /obj/item/clothing/suit/storage/toggle/leather_jacket = 100, - /obj/item/clothing/suit/storage/leather_jacket_alt = 100, - /obj/item/clothing/suit/storage/toggle/brown_jacket = 100, - /obj/item/clothing/suit/storage/toggle/leather_jacket/nanotrasen = 100, - /obj/item/clothing/suit/storage/toggle/brown_jacket/nanotrasen = 100, - /obj/item/clothing/suit/storage/toggle/leather_jacket/sleeveless = 100, - /obj/item/clothing/suit/storage/toggle/brown_jacket/sleeveless = 100, - /obj/item/clothing/suit/storage/toggle/leather_jacket/nanotrasen/sleeveless = 100, - /obj/item/clothing/suit/storage/toggle/brown_jacket/nanotrasen/sleeveless = 100, - /obj/item/clothing/suit/storage/miljacket = 100, - /obj/item/clothing/suit/storage/miljacket/alt = 100, - /obj/item/clothing/suit/storage/miljacket/green = 100, - /obj/item/clothing/suit/storage/apron/overalls = 100, - /obj/item/clothing/suit/storage/toggle/peacoat = 100, - /obj/item/clothing/accessory/poncho = 100, - /obj/item/clothing/accessory/poncho/green = 100, - /obj/item/clothing/accessory/poncho/red = 100, - /obj/item/clothing/accessory/poncho/purple = 100, - /obj/item/clothing/accessory/poncho/blue = 100, - /obj/item/clothing/suit/jacket/puffer = 100, - /obj/item/clothing/suit/jacket/puffer/vest = 100, - /obj/item/clothing/suit/storage/flannel/red = 100, - /obj/item/clothing/suit/unathi/robe = 100, - /obj/item/clothing/suit/storage/hooded/wintercoat/snowsuit = 100, - /obj/item/clothing/suit/storage/toggle/internalaffairs = 100, - /obj/item/clothing/suit/storage/toggle/lawyer/bluejacket = 100, - /obj/item/clothing/suit/storage/toggle/lawyer/purpjacket = 100, - /obj/item/clothing/suit/suspenders = 100, - /obj/item/clothing/suit/storage/toggle/track = 100, - /obj/item/clothing/suit/storage/toggle/track/blue = 100, - /obj/item/clothing/suit/storage/toggle/track/green = 100, - /obj/item/clothing/suit/storage/toggle/track/red = 100, - /obj/item/clothing/suit/storage/toggle/track/white = 100, - /obj/item/clothing/suit/storage/trench = 100, - /obj/item/clothing/suit/storage/trench/grey = 100, - /obj/item/clothing/suit/varsity = 100, - /obj/item/clothing/suit/varsity/red = 100, - /obj/item/clothing/suit/varsity/purple = 100, - /obj/item/clothing/suit/varsity/green = 100, - /obj/item/clothing/suit/varsity/blue = 100, - /obj/item/clothing/suit/varsity/brown = 100, - /obj/item/clothing/suit/storage/hooded/wintercoat = 100, - /obj/item/clothing/suit/storage/hooded/wintercoat/aformal = 100, - /obj/item/clothing/suit/storage/teshari/cloak/standard/white_grey = 100) - premium = list(/obj/item/clothing/suit/imperium_monk = 3, - /obj/item/clothing/suit/storage/hooded/wintercoat/cosmic = 1) - contraband = list(/obj/item/toy/katana = 1) - -/obj/machinery/vending/loadout/costume - name = "Thespian's Delight" - desc = "Sometimes nerds need costumes!" - product_ads = "Don't let your art be stifled!;Remember, practice makes perfect!;Break a leg!;Don't make me get the cane!;Thespian's Delight entering stage right!;Costumes for your acting needs!" - icon = 'icons/obj/vending.dmi' - icon_state = "theater" - products = list(/obj/item/clothing/suit/storage/hooded/costume/carp = 3, - /obj/item/clothing/suit/storage/hooded/costume/carp = 3, - /obj/item/clothing/suit/chickensuit = 3, - /obj/item/clothing/head/chicken = 3, - /obj/item/clothing/head/helmet/gladiator = 3, - /obj/item/clothing/under/gladiator = 3, - /obj/item/clothing/suit/storage/toggle/labcoat/mad = 3, - /obj/item/clothing/under/suit_jacket/green = 3, - /obj/item/clothing/glasses/gglasses = 3, - /obj/item/clothing/head/flatcap = 3, - /obj/item/clothing/shoes/boots/jackboots = 3, - /obj/item/clothing/under/schoolgirl = 3, - /obj/item/clothing/head/kitty = 3, - /obj/item/clothing/glasses/sunglasses/blindfold = 3, - /obj/item/clothing/head/beret = 3, - /obj/item/clothing/under/skirt = 3, - /obj/item/clothing/under/suit_jacket = 3, - /obj/item/clothing/head/that = 3, - /obj/item/clothing/accessory/wcoat = 3, - /obj/item/clothing/under/scratch = 3, - /obj/item/clothing/shoes/white = 3, - /obj/item/clothing/gloves/white = 3, - /obj/item/clothing/under/kilt = 3, - /obj/item/clothing/glasses/monocle = 3, - /obj/item/clothing/under/sl_suit = 3, - /obj/item/clothing/mask/fakemoustache = 3, - /obj/item/weapon/cane = 3, - /obj/item/clothing/head/bowler = 3, - /obj/item/clothing/head/plaguedoctorhat = 3, - /obj/item/clothing/suit/bio_suit/plaguedoctorsuit = 3, - /obj/item/clothing/mask/gas/plaguedoctor/fluff = 3, - /obj/item/clothing/under/owl = 3, - /obj/item/clothing/mask/gas/owl_mask = 3, - /obj/item/clothing/under/waiter = 3, - /obj/item/clothing/suit/storage/apron = 3, - /obj/item/clothing/under/pirate = 3, - /obj/item/clothing/head/pirate = 3, - /obj/item/clothing/suit/pirate = 3, - /obj/item/clothing/glasses/eyepatch = 3, - /obj/item/clothing/head/ushanka = 3, - /obj/item/clothing/under/soviet = 3, - /obj/item/clothing/suit/imperium_monk = 1, - /obj/item/clothing/suit/holidaypriest = 3, - /obj/item/clothing/head/witchwig = 3, - /obj/item/clothing/under/sundress = 3, - /obj/item/weapon/staff/broom = 3, - /obj/item/clothing/suit/wizrobe/fake = 3, - /obj/item/clothing/head/wizard/fake = 3, - /obj/item/weapon/staff = 3, - /obj/item/clothing/mask/gas/sexyclown = 3, - /obj/item/clothing/under/sexyclown = 3, - /obj/item/clothing/mask/gas/sexymime = 3, - /obj/item/clothing/under/sexymime = 3, - /obj/item/clothing/suit/storage/hooded/knight_costume = 3, - /obj/item/clothing/suit/storage/hooded/knight_costume/galahad = 3, - /obj/item/clothing/suit/storage/hooded/knight_costume/lancelot = 3, - /obj/item/clothing/suit/storage/hooded/knight_costume/robin = 3, - /obj/item/clothing/suit/armor/combat/crusader_costume = 3, - /obj/item/clothing/suit/armor/combat/crusader_costume/bedevere = 3, - /obj/item/clothing/head/helmet/combat/crusader_costume = 3, - /obj/item/clothing/head/helmet/combat/bedevere_costume = 3, - /obj/item/clothing/gloves/combat/knight_costume = 3, - /obj/item/clothing/gloves/combat/knight_costume/brown = 3, - /obj/item/clothing/shoes/knight_costume = 3, - /obj/item/clothing/shoes/knight_costume/black = 3) - prices = list(/obj/item/clothing/suit/storage/hooded/costume/carp = 200, - /obj/item/clothing/suit/storage/hooded/costume/carp = 200, - /obj/item/clothing/suit/chickensuit = 200, - /obj/item/clothing/head/chicken = 200, - /obj/item/clothing/head/helmet/gladiator = 300, - /obj/item/clothing/under/gladiator = 500, - /obj/item/clothing/suit/storage/toggle/labcoat/mad = 200, - /obj/item/clothing/under/suit_jacket/green = 200, - /obj/item/clothing/glasses/gglasses = 200, - /obj/item/clothing/head/flatcap = 200, - /obj/item/clothing/shoes/boots/jackboots = 200, - /obj/item/clothing/under/schoolgirl = 200, - /obj/item/clothing/head/kitty = 200, - /obj/item/clothing/glasses/sunglasses/blindfold = 200, - /obj/item/clothing/head/beret = 200, - /obj/item/clothing/under/skirt = 200, - /obj/item/clothing/under/suit_jacket = 200, - /obj/item/clothing/head/that = 200, - /obj/item/clothing/accessory/wcoat = 200, - /obj/item/clothing/under/scratch = 200, - /obj/item/clothing/shoes/white = 200, - /obj/item/clothing/gloves/white = 200, - /obj/item/clothing/under/kilt = 200, - /obj/item/clothing/glasses/monocle = 400, - /obj/item/clothing/under/sl_suit = 200, - /obj/item/clothing/mask/fakemoustache = 200, - /obj/item/weapon/cane = 300, - /obj/item/clothing/head/bowler = 200, - /obj/item/clothing/head/plaguedoctorhat = 300, - /obj/item/clothing/suit/bio_suit/plaguedoctorsuit = 300, - /obj/item/clothing/mask/gas/plaguedoctor/fluff = 600, - /obj/item/clothing/under/owl = 400, - /obj/item/clothing/mask/gas/owl_mask = 400, - /obj/item/clothing/under/waiter = 100, - /obj/item/clothing/suit/storage/apron = 200, - /obj/item/clothing/under/pirate = 300, - /obj/item/clothing/head/pirate = 400, - /obj/item/clothing/suit/pirate = 600, - /obj/item/clothing/glasses/eyepatch = 200, - /obj/item/clothing/head/ushanka = 200, - /obj/item/clothing/under/soviet = 200, - /obj/item/clothing/suit/imperium_monk = 2000, - /obj/item/clothing/suit/holidaypriest = 200, - /obj/item/clothing/head/witchwig = 200, - /obj/item/clothing/under/sundress = 50, - /obj/item/weapon/staff/broom = 400, - /obj/item/clothing/suit/wizrobe/fake = 200, - /obj/item/clothing/head/wizard/fake = 200, - /obj/item/weapon/staff = 400, - /obj/item/clothing/mask/gas/sexyclown = 600, - /obj/item/clothing/under/sexyclown = 200, - /obj/item/clothing/mask/gas/sexymime = 600, - /obj/item/clothing/under/sexymime = 200, - /obj/item/clothing/suit/storage/hooded/knight_costume = 200, - /obj/item/clothing/suit/storage/hooded/knight_costume/galahad = 200, - /obj/item/clothing/suit/storage/hooded/knight_costume/lancelot = 200, - /obj/item/clothing/suit/storage/hooded/knight_costume/robin = 200, - /obj/item/clothing/suit/armor/combat/crusader_costume = 200, - /obj/item/clothing/suit/armor/combat/crusader_costume/bedevere = 200, - /obj/item/clothing/head/helmet/combat/crusader_costume = 200, - /obj/item/clothing/head/helmet/combat/bedevere_costume = 200, - /obj/item/clothing/gloves/combat/knight_costume = 200, - /obj/item/clothing/gloves/combat/knight_costume/brown = 200, - /obj/item/clothing/shoes/knight_costume = 200, - /obj/item/clothing/shoes/knight_costume/black = 200) - premium = list(/obj/item/clothing/suit/imperium_monk = 3, - /obj/item/clothing/suit/barding/agatha = 2, - /obj/item/clothing/suit/barding/alt_agatha = 2, - /obj/item/clothing/suit/barding/mason = 2, - /obj/item/clothing/suit/drake_cloak = 2) - contraband = list(/obj/item/clothing/head/syndicatefake = 1, - /obj/item/clothing/suit/syndicatefake = 1) - -/obj/machinery/seed_storage/brig - name = "Prisoners' food seed storage" - starting_seeds = list( - /obj/item/seeds/appleseed = 3, - /obj/item/seeds/bananaseed = 3, - /obj/item/seeds/berryseed = 3, - /obj/item/seeds/cabbageseed = 3, - /obj/item/seeds/carrotseed = 3, - /obj/item/seeds/celery = 3, - /obj/item/seeds/chantermycelium = 3, - /obj/item/seeds/cherryseed = 3, - /obj/item/seeds/chiliseed = 3, - /obj/item/seeds/cocoapodseed = 3, - /obj/item/seeds/cornseed = 3, - /obj/item/seeds/durian = 3, - /obj/item/seeds/eggplantseed = 3, - /obj/item/seeds/grapeseed = 3, - /obj/item/seeds/grassseed = 3, - /obj/item/seeds/replicapod = 3, - /obj/item/seeds/lavenderseed = 3, - /obj/item/seeds/lemonseed = 3, - /obj/item/seeds/lettuce = 3, - /obj/item/seeds/limeseed = 3, - /obj/item/seeds/mtearseed = 2, - /obj/item/seeds/orangeseed = 3, - /obj/item/seeds/onionseed = 3, - /obj/item/seeds/peanutseed = 3, - /obj/item/seeds/plumpmycelium = 3, - /obj/item/seeds/poppyseed = 3, - /obj/item/seeds/potatoseed = 3, - /obj/item/seeds/pumpkinseed = 3, - /obj/item/seeds/rhubarb = 3, - /obj/item/seeds/riceseed = 3, - /obj/item/seeds/rose = 3, - /obj/item/seeds/soyaseed = 3, - /obj/item/seeds/pineapple = 3, - /obj/item/seeds/sugarcaneseed = 3, - /obj/item/seeds/sunflowerseed = 3, - /obj/item/seeds/shandseed = 2, - /obj/item/seeds/tobaccoseed = 3, - /obj/item/seeds/tomatoseed = 3, - /obj/item/seeds/towermycelium = 3, - /obj/item/seeds/vanilla = 3, - /obj/item/seeds/watermelonseed = 3, - /obj/item/seeds/wheatseed = 3, - /obj/item/seeds/whitebeetseed = 3, - /obj/item/seeds/wabback = 2) - -/obj/machinery/vending/hydronutrients/brig - name = "Brig NutriMax" - desc = "A plant nutrients vendor. Seems some items aren't included." - products = list(/obj/item/weapon/reagent_containers/glass/bottle/eznutrient = 6,/obj/item/weapon/reagent_containers/glass/bottle/left4zed = 4,/obj/item/weapon/reagent_containers/glass/bottle/robustharvest = 3,/obj/item/weapon/plantspray/pests = 20, - /obj/item/weapon/reagent_containers/glass/beaker = 4,/obj/item/weapon/storage/bag/plants = 5) - premium = list(/obj/item/weapon/reagent_containers/glass/bottle/ammonia = 10,/obj/item/weapon/reagent_containers/glass/bottle/diethylamine = 5) - -/obj/machinery/vending/abductor - name = "Abduct-U" - desc = "A mysterious machine which can fabricate many tools for acquiring test subjects." - icon = 'icons/obj/abductor_vr.dmi' - icon_state = "dispenser_2way" - products = list(/obj/item/weapon/card/id/syndicate/station_access = 1, - /obj/item/weapon/storage/box/syndie_kit/chameleon = 1, - /obj/item/clothing/mask/bandana = 1, - /obj/item/clothing/glasses/sunglasses = 1, - /obj/item/device/radio/headset/syndicate/alt = 1, - /obj/item/device/pda = 1, - /obj/item/device/communicator = 1, - /obj/item/weapon/tape_roll = 2, - /obj/item/weapon/handcuffs = 4, - /obj/item/weapon/handcuffs/legcuffs = 4, - /obj/item/weapon/cell/device/weapon/recharge/alien = 2, - /obj/item/device/chameleon = 1, - /obj/item/weapon/storage/mre/menu11 = 2, - /obj/item/device/flash = 2, - /obj/item/weapon/pen/reagent/paralysis = 4, - /obj/item/device/perfect_tele/alien = 1 - ) - vend_delay = 15 - -/obj/machinery/vending/loadout - name = "Fingers and Toes" - desc = "A special vendor for gloves and shoes!" - product_ads = "Do you have fingers and toes? COVER THEM UP!;Show me your toes! Wait. NO DON'T! BUY NEW SHOES!;Don't leave prints, BUY SOME GLOVES!;Remember to check your shoes for micros! You don't have to let them out, but just check for them!;Fingers and Toes is not liable for micro entrapment or abuse under the feet of our patrons.!;This little piggy went WE WE WE all the way down to FINGERS AND TOES to pick up some sweet new gloves and shoes." - icon = 'icons/obj/vending_vr.dmi' - icon_state = "glovesnshoes" - products = list(/obj/item/clothing/gloves/evening = 5, - /obj/item/clothing/gloves/fingerless = 5, - /obj/item/clothing/gloves/black = 5, - /obj/item/clothing/gloves/blue = 5, - /obj/item/clothing/gloves/brown = 5, - /obj/item/clothing/gloves/color = 5, - /obj/item/clothing/gloves/green = 5, - /obj/item/clothing/gloves/grey = 5, - /obj/item/clothing/gloves/sterile/latex = 5, - /obj/item/clothing/gloves/light_brown = 5, - /obj/item/clothing/gloves/sterile/nitrile = 5, - /obj/item/clothing/gloves/orange = 5, - /obj/item/clothing/gloves/purple = 5, - /obj/item/clothing/gloves/red = 5, - /obj/item/clothing/gloves/fluff/siren = 5, - /obj/item/clothing/gloves/white = 5, - /obj/item/clothing/gloves/duty = 5, - /obj/item/clothing/shoes/athletic = 5, - /obj/item/clothing/shoes/boots/fluff/siren = 5, - /obj/item/clothing/shoes/slippers = 5, - /obj/item/clothing/shoes/boots/cowboy/classic = 5, - /obj/item/clothing/shoes/boots/cowboy = 5, - /obj/item/clothing/shoes/boots/duty = 5, - /obj/item/clothing/shoes/flats/white/color = 5, - /obj/item/clothing/shoes/flipflop = 5, - /obj/item/clothing/shoes/heels = 5, - /obj/item/clothing/shoes/hitops/black = 5, - /obj/item/clothing/shoes/hitops/blue = 5, - /obj/item/clothing/shoes/hitops/green = 5, - /obj/item/clothing/shoes/hitops/orange = 5, - /obj/item/clothing/shoes/hitops/purple = 5, - /obj/item/clothing/shoes/hitops/red = 5, - /obj/item/clothing/shoes/flats/white/color = 5, - /obj/item/clothing/shoes/hitops/yellow = 5, - /obj/item/clothing/shoes/boots/jackboots = 5, - /obj/item/clothing/shoes/boots/jungle = 5, - /obj/item/clothing/shoes/black/cuffs = 5, - /obj/item/clothing/shoes/black/cuffs/blue = 5, - /obj/item/clothing/shoes/black/cuffs/red = 5, - /obj/item/clothing/shoes/sandal = 5, - /obj/item/clothing/shoes/black = 5, - /obj/item/clothing/shoes/blue = 5, - /obj/item/clothing/shoes/brown = 5, - /obj/item/clothing/shoes/laceup = 5, - /obj/item/clothing/shoes/green = 5, - /obj/item/clothing/shoes/laceup/brown = 5, - /obj/item/clothing/shoes/orange = 5, - /obj/item/clothing/shoes/purple = 5, - /obj/item/clothing/shoes/red = 5, - /obj/item/clothing/shoes/white = 5, - /obj/item/clothing/shoes/yellow = 5, - /obj/item/clothing/shoes/skater = 5, - /obj/item/clothing/shoes/boots/cowboy/snakeskin = 5, - /obj/item/clothing/shoes/boots/jackboots/toeless = 5, - /obj/item/clothing/shoes/boots/workboots/toeless = 5, - /obj/item/clothing/shoes/boots/winter = 5, - /obj/item/clothing/shoes/boots/workboots = 5, - /obj/item/clothing/shoes/footwraps = 5) - prices = list(/obj/item/clothing/gloves/evening = 50, - /obj/item/clothing/gloves/fingerless = 50, - /obj/item/clothing/gloves/black = 50, - /obj/item/clothing/gloves/blue = 50, - /obj/item/clothing/gloves/brown = 50, - /obj/item/clothing/gloves/color = 50, - /obj/item/clothing/gloves/green = 50, - /obj/item/clothing/gloves/grey = 50, - /obj/item/clothing/gloves/sterile/latex = 100, - /obj/item/clothing/gloves/light_brown = 50, - /obj/item/clothing/gloves/sterile/nitrile = 100, - /obj/item/clothing/gloves/orange = 50, - /obj/item/clothing/gloves/purple = 50, - /obj/item/clothing/gloves/red = 50, - /obj/item/clothing/gloves/fluff/siren = 50, - /obj/item/clothing/gloves/white = 50, - /obj/item/clothing/gloves/duty = 150, - /obj/item/clothing/shoes/athletic = 50, - /obj/item/clothing/shoes/boots/fluff/siren = 50, - /obj/item/clothing/shoes/slippers = 50, - /obj/item/clothing/shoes/boots/cowboy/classic = 50, - /obj/item/clothing/shoes/boots/cowboy = 50, - /obj/item/clothing/shoes/boots/duty = 100, - /obj/item/clothing/shoes/flats/white/color = 50, - /obj/item/clothing/shoes/flipflop = 50, - /obj/item/clothing/shoes/heels = 50, - /obj/item/clothing/shoes/hitops/black = 50, - /obj/item/clothing/shoes/hitops/blue = 50, - /obj/item/clothing/shoes/hitops/green = 50, - /obj/item/clothing/shoes/hitops/orange = 50, - /obj/item/clothing/shoes/hitops/purple = 50, - /obj/item/clothing/shoes/hitops/red = 50, - /obj/item/clothing/shoes/flats/white/color = 50, - /obj/item/clothing/shoes/hitops/yellow = 50, - /obj/item/clothing/shoes/boots/jackboots = 50, - /obj/item/clothing/shoes/boots/jungle = 100, - /obj/item/clothing/shoes/black/cuffs = 50, - /obj/item/clothing/shoes/black/cuffs/blue = 50, - /obj/item/clothing/shoes/black/cuffs/red = 50, - /obj/item/clothing/shoes/sandal = 50, - /obj/item/clothing/shoes/black = 50, - /obj/item/clothing/shoes/blue = 50, - /obj/item/clothing/shoes/brown = 50, - /obj/item/clothing/shoes/laceup = 50, - /obj/item/clothing/shoes/green = 50, - /obj/item/clothing/shoes/laceup/brown = 50, - /obj/item/clothing/shoes/orange = 50, - /obj/item/clothing/shoes/purple = 50, - /obj/item/clothing/shoes/red = 50, - /obj/item/clothing/shoes/white = 50, - /obj/item/clothing/shoes/yellow = 50, - /obj/item/clothing/shoes/skater = 50, - /obj/item/clothing/shoes/boots/cowboy/snakeskin = 50, - /obj/item/clothing/shoes/boots/jackboots/toeless = 50, - /obj/item/clothing/shoes/boots/workboots/toeless = 50, - /obj/item/clothing/shoes/boots/winter = 50, - /obj/item/clothing/shoes/boots/workboots = 50, - /obj/item/clothing/shoes/footwraps = 50) - premium = list(/obj/item/clothing/gloves/rainbow = 1, - /obj/item/clothing/shoes/rainbow = 1,) - contraband = list(/obj/item/clothing/shoes/syndigaloshes = 1, - /obj/item/clothing/shoes/clown_shoes = 1) - -/obj/machinery/vending/loadout/uniform - name = "The Basics" - desc = "A vendor using compressed matter cartridges to store large amounts of basic station uniforms." - product_ads = "Don't get caught naked!;Pick up your uniform!;Using compressed matter cartridges and VERY ETHICAL labor practices, we bring you the uniforms you need!;No uniform? No problem!;We've got your covered!;The Basics is not responsible for being crushed under the amount of things inside our machines. DO NOT VEND IN EXCESS!!" - icon_state = "loadout" - vend_delay = 16 - products = list(/obj/item/device/pda = 50, - /obj/item/device/radio/headset = 50, - /obj/item/weapon/storage/backpack/ = 10, - /obj/item/weapon/storage/backpack/messenger = 10, - /obj/item/weapon/storage/backpack/satchel = 10, - /obj/item/clothing/under/color = 5, - /obj/item/clothing/under/color/aqua = 5, - /obj/item/clothing/under/color/black = 5, - /obj/item/clothing/under/color/blackjumpskirt = 5, - /obj/item/clothing/under/color/blue = 5, - /obj/item/clothing/under/color/brown = 5, - /obj/item/clothing/under/color/green = 5, - /obj/item/clothing/under/color/grey = 5, - /obj/item/clothing/under/color/orange = 5, - /obj/item/clothing/under/color/pink = 5, - /obj/item/clothing/under/color/red = 5, - /obj/item/clothing/under/color/white = 5, - /obj/item/clothing/under/color/yellow = 5, - /obj/item/clothing/shoes/black = 20, - /obj/item/clothing/shoes/white = 20) - prices = list() - -/obj/machinery/vending/loadout/accessory - name = "Looty Inc." - desc = "A special vendor for accessories." - product_ads = "Want shinies? We have the shinies.;Need that special something to complete your outfit? We have what you need!;Ditch that old dull dangly something you've got and pick up one of our shinies!;Bracelets, collars, scarfs rings and more! We have the fancy things you need!;Does your pet need a collar? We don't judge! Keep them in line with one of one of ours!;Top of the line materials! 'Hand crafted' goods!" - icon_state = "accessory" - vend_delay = 6 - products = list(/obj/item/clothing/accessory = 5, - /obj/item/clothing/accessory/armband/med/color = 10, - /obj/item/clothing/accessory/asymmetric = 5, - /obj/item/clothing/accessory/asymmetric/purple = 5, - /obj/item/clothing/accessory/asymmetric/green = 5, - /obj/item/clothing/accessory/bracelet = 5, - /obj/item/clothing/accessory/bracelet/material = 5, - /obj/item/clothing/accessory/bracelet/friendship = 5, - /obj/item/clothing/accessory/chaps = 5, - /obj/item/clothing/accessory/chaps/black = 5, - /obj/item/weapon/storage/briefcase/clutch = 1, - /obj/item/clothing/accessory/collar = 5, - /obj/item/clothing/accessory/collar/bell = 5, - /obj/item/clothing/accessory/collar/spike = 5, - /obj/item/clothing/accessory/collar/pink = 5, - /obj/item/clothing/accessory/collar/holo = 5, - /obj/item/clothing/accessory/collar/shock = 5, - /obj/item/weapon/storage/belt/fannypack = 1, - /obj/item/weapon/storage/belt/fannypack/white = 5, - /obj/item/clothing/accessory/fullcape = 5, - /obj/item/clothing/accessory/halfcape = 5, - /obj/item/clothing/accessory/hawaiian = 5, - /obj/item/clothing/accessory/hawaiian/blue = 5, - /obj/item/clothing/accessory/hawaiian/pink = 5, - /obj/item/clothing/accessory/hawaiian/red = 5, - /obj/item/clothing/accessory/hawaiian/yellow = 5, - /obj/item/clothing/accessory/locket = 5, - /obj/item/weapon/storage/backpack/purse = 1, - /obj/item/clothing/accessory/sash = 5, - /obj/item/clothing/accessory/scarf = 5, - /obj/item/clothing/accessory/scarf/red = 5, - /obj/item/clothing/accessory/scarf/darkblue = 5, - /obj/item/clothing/accessory/scarf/purple = 5, - /obj/item/clothing/accessory/scarf/yellow = 5, - /obj/item/clothing/accessory/scarf/orange = 5, - /obj/item/clothing/accessory/scarf/lightblue = 5, - /obj/item/clothing/accessory/scarf/white = 5, - /obj/item/clothing/accessory/scarf/black = 5, - /obj/item/clothing/accessory/scarf/zebra = 5, - /obj/item/clothing/accessory/scarf/christmas = 5, - /obj/item/clothing/accessory/scarf/stripedred = 5, - /obj/item/clothing/accessory/scarf/stripedgreen = 5, - /obj/item/clothing/accessory/scarf/stripedblue = 5, - /obj/item/clothing/accessory/jacket = 5, - /obj/item/clothing/accessory/jacket/checkered = 5, - /obj/item/clothing/accessory/jacket/burgundy = 5, - /obj/item/clothing/accessory/jacket/navy = 5, - /obj/item/clothing/accessory/jacket/charcoal = 5, - /obj/item/clothing/accessory/vest = 5, - /obj/item/clothing/accessory/sweater = 5, - /obj/item/clothing/accessory/sweater/pink = 5, - /obj/item/clothing/accessory/sweater/mint = 5, - /obj/item/clothing/accessory/sweater/blue = 5, - /obj/item/clothing/accessory/sweater/heart = 5, - /obj/item/clothing/accessory/sweater/nt = 5, - /obj/item/clothing/accessory/sweater/keyhole = 5, - /obj/item/clothing/accessory/sweater/winterneck = 5, - /obj/item/clothing/accessory/sweater/uglyxmas = 5, - /obj/item/clothing/accessory/sweater/flowersweater = 5, - /obj/item/clothing/accessory/sweater/redneck = 5, - /obj/item/clothing/accessory/tie = 5, - /obj/item/clothing/accessory/tie/horrible = 5, - /obj/item/clothing/accessory/tie/white = 5, - /obj/item/clothing/accessory/tie/navy = 5, - /obj/item/clothing/accessory/tie/yellow = 5, - /obj/item/clothing/accessory/tie/darkgreen = 5, - /obj/item/clothing/accessory/tie/black = 5, - /obj/item/clothing/accessory/tie/red_long = 5, - /obj/item/clothing/accessory/tie/red_clip = 5, - /obj/item/clothing/accessory/tie/blue_long = 5, - /obj/item/clothing/accessory/tie/blue_clip = 5, - /obj/item/clothing/accessory/tie/red = 5, - /obj/item/clothing/accessory/wcoat = 5, - /obj/item/clothing/accessory/wcoat/red = 5, - /obj/item/clothing/accessory/wcoat/grey = 5, - /obj/item/clothing/accessory/wcoat/brown = 5, - /obj/item/clothing/accessory/wcoat/gentleman = 5, - /obj/item/clothing/accessory/wcoat/swvest = 5, - /obj/item/clothing/accessory/wcoat/swvest/blue = 5, - /obj/item/clothing/accessory/wcoat/swvest/red = 5, - /obj/item/weapon/storage/wallet = 5, - /obj/item/weapon/storage/wallet/poly = 5, - /obj/item/weapon/storage/wallet/womens = 5, - /obj/item/weapon/lipstick = 5, - /obj/item/weapon/lipstick/purple = 5, - /obj/item/weapon/lipstick/jade = 5, - /obj/item/weapon/lipstick/black = 5, - /obj/item/clothing/ears/earmuffs = 5, - /obj/item/clothing/ears/earmuffs/headphones = 5, - /obj/item/clothing/ears/earring/stud = 5, - /obj/item/clothing/ears/earring/dangle = 5, - /obj/item/clothing/gloves/ring/mariner = 5, - /obj/item/clothing/gloves/ring/engagement = 5, - /obj/item/clothing/gloves/ring/seal/signet = 5, - /obj/item/clothing/gloves/ring/seal/mason = 5, - /obj/item/clothing/gloves/ring/material/plastic = 5, - /obj/item/clothing/gloves/ring/material/steel = 5, - /obj/item/clothing/gloves/ring/material/gold = 5, - /obj/item/clothing/glasses/eyepatch = 5, - /obj/item/clothing/glasses/gglasses = 5, - /obj/item/clothing/glasses/regular/hipster = 5, - /obj/item/clothing/glasses/rimless = 5, - /obj/item/clothing/glasses/thin = 5, - /obj/item/clothing/glasses/monocle = 5, - /obj/item/clothing/glasses/goggles = 5, - /obj/item/clothing/glasses/fluff/spiffygogs = 5, - /obj/item/clothing/glasses/fakesunglasses = 5, - /obj/item/clothing/glasses/fakesunglasses/aviator = 5, - /obj/item/clothing/mask/bandana/blue = 5, - /obj/item/clothing/mask/bandana/gold = 5, - /obj/item/clothing/mask/bandana/green = 5, - /obj/item/clothing/mask/bandana/red = 5, - /obj/item/clothing/mask/surgical = 5) - prices = list(/obj/item/clothing/accessory = 50, - /obj/item/clothing/accessory/armband/med/color = 50, - /obj/item/clothing/accessory/asymmetric = 50, - /obj/item/clothing/accessory/asymmetric/purple = 50, - /obj/item/clothing/accessory/asymmetric/green = 50, - /obj/item/clothing/accessory/bracelet = 50, - /obj/item/clothing/accessory/bracelet/material = 50, - /obj/item/clothing/accessory/bracelet/friendship = 50, - /obj/item/clothing/accessory/chaps = 50, - /obj/item/clothing/accessory/chaps/black = 50, - /obj/item/weapon/storage/briefcase/clutch = 50, - /obj/item/clothing/accessory/collar = 50, - /obj/item/clothing/accessory/collar/bell = 50, - /obj/item/clothing/accessory/collar/spike = 50, - /obj/item/clothing/accessory/collar/pink = 50, - /obj/item/clothing/accessory/collar/holo = 50, - /obj/item/clothing/accessory/collar/shock = 50, - /obj/item/weapon/storage/belt/fannypack = 50, - /obj/item/weapon/storage/belt/fannypack/white = 50, - /obj/item/clothing/accessory/fullcape = 50, - /obj/item/clothing/accessory/halfcape = 50, - /obj/item/clothing/accessory/hawaiian = 5, - /obj/item/clothing/accessory/hawaiian/blue = 5, - /obj/item/clothing/accessory/hawaiian/pink = 5, - /obj/item/clothing/accessory/hawaiian/red = 5, - /obj/item/clothing/accessory/hawaiian/yellow = 5, - /obj/item/clothing/accessory/locket = 50, - /obj/item/weapon/storage/backpack/purse = 50, - /obj/item/clothing/accessory/sash = 50, - /obj/item/clothing/accessory/scarf = 5, - /obj/item/clothing/accessory/scarf/red = 50, - /obj/item/clothing/accessory/scarf/darkblue = 50, - /obj/item/clothing/accessory/scarf/purple = 50, - /obj/item/clothing/accessory/scarf/yellow = 100, - /obj/item/clothing/accessory/scarf/orange = 50, - /obj/item/clothing/accessory/scarf/lightblue = 50, - /obj/item/clothing/accessory/scarf/white = 50, - /obj/item/clothing/accessory/scarf/black = 50, - /obj/item/clothing/accessory/scarf/zebra = 50, - /obj/item/clothing/accessory/scarf/christmas = 50, - /obj/item/clothing/accessory/scarf/stripedred = 50, - /obj/item/clothing/accessory/scarf/stripedgreen = 50, - /obj/item/clothing/accessory/scarf/stripedblue = 50, - /obj/item/clothing/accessory/jacket = 50, - /obj/item/clothing/accessory/jacket/checkered = 50, - /obj/item/clothing/accessory/jacket/burgundy = 50, - /obj/item/clothing/accessory/jacket/navy = 50, - /obj/item/clothing/accessory/jacket/charcoal = 50, - /obj/item/clothing/accessory/vest = 50, - /obj/item/clothing/accessory/sweater = 50, - /obj/item/clothing/accessory/sweater/pink = 50, - /obj/item/clothing/accessory/sweater/mint = 50, - /obj/item/clothing/accessory/sweater/blue = 50, - /obj/item/clothing/accessory/sweater/heart = 50, - /obj/item/clothing/accessory/sweater/nt = 5, - /obj/item/clothing/accessory/sweater/keyhole = 50, - /obj/item/clothing/accessory/sweater/winterneck = 50, - /obj/item/clothing/accessory/sweater/uglyxmas = 5, - /obj/item/clothing/accessory/sweater/flowersweater = 50, - /obj/item/clothing/accessory/sweater/redneck = 50, - /obj/item/clothing/accessory/tie = 50, - /obj/item/clothing/accessory/tie/horrible = 50, - /obj/item/clothing/accessory/tie/white = 50, - /obj/item/clothing/accessory/tie/navy = 50, - /obj/item/clothing/accessory/tie/yellow = 50, - /obj/item/clothing/accessory/tie/darkgreen = 50, - /obj/item/clothing/accessory/tie/black = 50, - /obj/item/clothing/accessory/tie/red_long = 50, - /obj/item/clothing/accessory/tie/red_clip = 50, - /obj/item/clothing/accessory/tie/blue_long = 50, - /obj/item/clothing/accessory/tie/blue_clip = 50, - /obj/item/clothing/accessory/tie/red = 50, - /obj/item/clothing/accessory/wcoat = 50, - /obj/item/clothing/accessory/wcoat/red = 50, - /obj/item/clothing/accessory/wcoat/grey = 50, - /obj/item/clothing/accessory/wcoat/brown = 50, - /obj/item/clothing/accessory/wcoat/gentleman = 50, - /obj/item/clothing/accessory/wcoat/swvest = 50, - /obj/item/clothing/accessory/wcoat/swvest/blue = 50, - /obj/item/clothing/accessory/wcoat/swvest/red = 50, - /obj/item/weapon/storage/wallet = 50, - /obj/item/weapon/storage/wallet/poly = 50, - /obj/item/weapon/storage/wallet/womens = 50, - /obj/item/weapon/lipstick = 50, - /obj/item/weapon/lipstick/purple = 50, - /obj/item/weapon/lipstick/jade = 50, - /obj/item/weapon/lipstick/black = 50, - /obj/item/clothing/ears/earmuffs = 50, - /obj/item/clothing/ears/earmuffs/headphones = 50, - /obj/item/clothing/ears/earring/stud = 50, - /obj/item/clothing/ears/earring/dangle = 50, - /obj/item/clothing/gloves/ring/mariner = 50, - /obj/item/clothing/gloves/ring/engagement = 50, - /obj/item/clothing/gloves/ring/seal/signet = 50, - /obj/item/clothing/gloves/ring/seal/mason = 50, - /obj/item/clothing/gloves/ring/material/plastic = 50, - /obj/item/clothing/gloves/ring/material/steel = 50, - /obj/item/clothing/gloves/ring/material/gold = 100, - /obj/item/clothing/glasses/eyepatch = 50, - /obj/item/clothing/glasses/gglasses = 50, - /obj/item/clothing/glasses/regular/hipster = 50, - /obj/item/clothing/glasses/rimless = 50, - /obj/item/clothing/glasses/thin = 50, - /obj/item/clothing/glasses/monocle = 50, - /obj/item/clothing/glasses/goggles = 50, - /obj/item/clothing/glasses/fluff/spiffygogs = 50, - /obj/item/clothing/glasses/fakesunglasses = 50, - /obj/item/clothing/glasses/fakesunglasses/aviator = 50, - /obj/item/clothing/mask/bandana/blue = 50, - /obj/item/clothing/mask/bandana/gold = 50, - /obj/item/clothing/mask/bandana/green = 50, - /obj/item/clothing/mask/bandana/red = 50, - /obj/item/clothing/mask/surgical = 50) - premium = list(/obj/item/weapon/bedsheet/rainbow = 1) - contraband = list(/obj/item/clothing/mask/gas/clown_hat = 1) - -/obj/machinery/vending/loadout/clothing - name = "General Jump" - desc = "A special vendor using compressed matter cartridges to store large amounts of clothing." - product_ads = "Tired of your grey jumpsuit? Spruce yourself up!;We have the outfit for you!;Don't let that grey jumpsuit get you down, get a ROBUST outfit right now!;Using compressed matter catridges and VERY ETHICAL labor practices to bring YOU the clothing you crave!;Are you sure you want to go to work in THAT?;All of our wares have a whole TWO pockets!" - icon_state = "clothing" - vend_delay = 16 - products = list(/obj/item/clothing/under/bathrobe = 5, - /obj/item/clothing/under/dress/black_corset = 5, - /obj/item/clothing/under/blazer = 5, - /obj/item/clothing/under/blazer/skirt = 5, - /obj/item/clothing/under/cheongsam = 5, - /obj/item/clothing/under/cheongsam/red = 5, - /obj/item/clothing/under/cheongsam/blue = 5, - /obj/item/clothing/under/cheongsam/black = 5, - /obj/item/clothing/under/cheongsam/darkred = 5, - /obj/item/clothing/under/cheongsam/green = 5, - /obj/item/clothing/under/cheongsam/purple = 5, - /obj/item/clothing/under/cheongsam/darkblue = 5, - /obj/item/clothing/under/croptop = 5, - /obj/item/clothing/under/croptop/red = 5, - /obj/item/clothing/under/croptop/grey = 5, - /obj/item/clothing/under/cuttop = 5, - /obj/item/clothing/under/cuttop/red = 5, - /obj/item/clothing/under/suit_jacket/female/skirt = 5, - /obj/item/clothing/under/dress/dress_fire = 5, - /obj/item/clothing/under/dress/flamenco = 5, - /obj/item/clothing/under/dress/flower_dress = 5, - /obj/item/clothing/under/fluff/gnshorts = 5, - /obj/item/clothing/under/color = 5, - /obj/item/clothing/under/color/aqua = 5, - /obj/item/clothing/under/color/black = 5, - /obj/item/clothing/under/color/blackf = 5, - /obj/item/clothing/under/color/blackjumpskirt = 5, - /obj/item/clothing/under/color/blue = 5, - /obj/item/clothing/under/color/brown = 5, - /obj/item/clothing/under/color/darkblue = 5, - /obj/item/clothing/under/color/darkred = 5, - /obj/item/clothing/under/color/green = 5, - /obj/item/clothing/under/color/grey = 5, - /obj/item/clothing/under/color/lightblue = 5, - /obj/item/clothing/under/color/lightbrown = 5, - /obj/item/clothing/under/color/lightgreen = 5, - /obj/item/clothing/under/color/lightpurple = 5, - /obj/item/clothing/under/color/lightred = 5, - /obj/item/clothing/under/color/orange = 5, - /obj/item/clothing/under/color/pink = 5, - /obj/item/clothing/under/color/prison = 5, - /obj/item/clothing/under/color/ranger = 5, - /obj/item/clothing/under/color/red = 5, - /obj/item/clothing/under/color/white = 5, - /obj/item/clothing/under/color/yellow = 5, - /obj/item/clothing/under/color/yellowgreen = 5, - /obj/item/clothing/under/corp/aether = 5, - /obj/item/clothing/under/corp/focal = 5, - /obj/item/clothing/under/corp/hephaestus = 5, - /obj/item/clothing/under/corp/wardt = 5, - /obj/item/clothing/under/kilt = 5, - /obj/item/clothing/under/fluff/latexmaid = 5, - /obj/item/clothing/under/dress/lilacdress = 5, - /obj/item/clothing/under/dress/white2 = 5, - /obj/item/clothing/under/dress/white4 = 5, - /obj/item/clothing/under/dress/maid = 5, - /obj/item/clothing/under/dress/maid/sexy = 5, - /obj/item/clothing/under/dress/maid/janitor = 5, - /obj/item/clothing/under/moderncoat = 5, - /obj/item/clothing/under/permit = 5, - /obj/item/clothing/under/oldwoman = 5, - /obj/item/clothing/under/frontier = 5, - /obj/item/clothing/under/mbill = 5, - /obj/item/clothing/under/pants/baggy/ = 5, - /obj/item/clothing/under/pants/baggy/classicjeans = 5, - /obj/item/clothing/under/pants/baggy/mustangjeans = 5, - /obj/item/clothing/under/pants/baggy/blackjeans = 5, - /obj/item/clothing/under/pants/baggy/greyjeans = 5, - /obj/item/clothing/under/pants/baggy/youngfolksjeans = 5, - /obj/item/clothing/under/pants/baggy/white = 5, - /obj/item/clothing/under/pants/baggy/red = 5, - /obj/item/clothing/under/pants/baggy/black = 5, - /obj/item/clothing/under/pants/baggy/tan = 5, - /obj/item/clothing/under/pants/baggy/track = 5, - /obj/item/clothing/under/pants/baggy/khaki = 5, - /obj/item/clothing/under/pants/baggy/camo = 5, - /obj/item/clothing/under/pants/utility/ = 5, - /obj/item/clothing/under/pants/utility/orange = 5, - /obj/item/clothing/under/pants/utility/blue = 5, - /obj/item/clothing/under/pants/utility/white = 5, - /obj/item/clothing/under/pants/utility/red = 5, - /obj/item/clothing/under/pants/chaps = 5, - /obj/item/clothing/under/pants/chaps/black = 5, - /obj/item/clothing/under/pants/track = 5, - /obj/item/clothing/under/pants/track/red = 5, - /obj/item/clothing/under/pants/track/white = 5, - /obj/item/clothing/under/pants/track/green = 5, - /obj/item/clothing/under/pants/track/blue = 5, - /obj/item/clothing/under/pants/yogapants = 5, - /obj/item/clothing/under/ascetic = 5, - /obj/item/clothing/under/dress/white3 = 5, - /obj/item/clothing/under/skirt/pleated = 5, - /obj/item/clothing/under/dress/darkred = 5, - /obj/item/clothing/under/dress/redeveninggown = 5, - /obj/item/clothing/under/dress/red_swept_dress = 5, - /obj/item/clothing/under/dress/sailordress = 5, - /obj/item/clothing/under/dress/sari = 5, - /obj/item/clothing/under/dress/sari/green = 5, - /obj/item/clothing/under/qipao = 5, - /obj/item/clothing/under/qipao/red = 5, - /obj/item/clothing/under/qipao/white = 5, - /obj/item/clothing/under/shorts/red = 5, - /obj/item/clothing/under/shorts/green = 5, - /obj/item/clothing/under/shorts/blue = 5, - /obj/item/clothing/under/shorts/black = 5, - /obj/item/clothing/under/shorts/grey = 5, - /obj/item/clothing/under/shorts/white = 5, - /obj/item/clothing/under/shorts/jeans = 5, - /obj/item/clothing/under/shorts/jeans/ = 5, - /obj/item/clothing/under/shorts/jeans/classic = 5, - /obj/item/clothing/under/shorts/jeans/mustang = 5, - /obj/item/clothing/under/shorts/jeans/youngfolks = 5, - /obj/item/clothing/under/shorts/jeans/black = 5, - /obj/item/clothing/under/shorts/jeans/grey = 5, - /obj/item/clothing/under/shorts/khaki/ = 5, - /obj/item/clothing/under/skirt/loincloth = 5, - /obj/item/clothing/under/skirt/khaki = 5, - /obj/item/clothing/under/skirt/blue = 5, - /obj/item/clothing/under/skirt/red = 5, - /obj/item/clothing/under/skirt/denim = 5, - /obj/item/clothing/under/skirt/pleated = 5, - /obj/item/clothing/under/skirt/outfit/plaid_blue = 5, - /obj/item/clothing/under/skirt/outfit/plaid_red = 5, - /obj/item/clothing/under/skirt/outfit/plaid_purple = 5, - /obj/item/clothing/under/overalls/sleek = 5, - /obj/item/clothing/under/sl_suit = 5, - /obj/item/clothing/under/gentlesuit = 5, - /obj/item/clothing/under/gentlesuit/skirt = 5, - /obj/item/clothing/under/suit_jacket = 5, - /obj/item/clothing/under/suit_jacket/really_black/skirt = 5, - /obj/item/clothing/under/suit_jacket/really_black = 5, - /obj/item/clothing/under/suit_jacket/female/skirt = 5, - /obj/item/clothing/under/suit_jacket/female/ = 5, - /obj/item/clothing/under/suit_jacket/red = 5, - /obj/item/clothing/under/suit_jacket/red/skirt = 5, - /obj/item/clothing/under/suit_jacket/charcoal = 5, - /obj/item/clothing/under/suit_jacket/charcoal/skirt = 5, - /obj/item/clothing/under/suit_jacket/navy = 5, - /obj/item/clothing/under/suit_jacket/navy/skirt = 5, - /obj/item/clothing/under/suit_jacket/burgundy = 5, - /obj/item/clothing/under/suit_jacket/burgundy/skirt = 5, - /obj/item/clothing/under/suit_jacket/checkered = 5, - /obj/item/clothing/under/suit_jacket/checkered/skirt = 5, - /obj/item/clothing/under/suit_jacket/tan = 5, - /obj/item/clothing/under/suit_jacket/tan/skirt = 5, - /obj/item/clothing/under/scratch = 5, - /obj/item/clothing/under/scratch/skirt = 5, - /obj/item/clothing/under/sundress = 5, - /obj/item/clothing/under/sundress_white = 5, - /obj/item/clothing/under/rank/psych/turtleneck/sweater = 5, - /obj/item/weapon/storage/box/fluff/swimsuit = 5, - /obj/item/weapon/storage/box/fluff/swimsuit/blue = 5, - /obj/item/weapon/storage/box/fluff/swimsuit/purple = 5, - /obj/item/weapon/storage/box/fluff/swimsuit/green = 5, - /obj/item/weapon/storage/box/fluff/swimsuit/red = 5, - /obj/item/weapon/storage/box/fluff/swimsuit/white = 5, - /obj/item/weapon/storage/box/fluff/swimsuit/earth = 5, - /obj/item/weapon/storage/box/fluff/swimsuit/engineering = 5, - /obj/item/weapon/storage/box/fluff/swimsuit/science = 5, - /obj/item/weapon/storage/box/fluff/swimsuit/security = 5, - /obj/item/weapon/storage/box/fluff/swimsuit/medical = 5, - /obj/item/weapon/storage/box/fluff/swimsuit/cowbikini = 5, - /obj/item/clothing/under/utility = 5, - /obj/item/clothing/under/utility/grey = 5, - /obj/item/clothing/under/utility/blue = 5, - /obj/item/clothing/under/fluff/v_nanovest = 5, - /obj/item/clothing/under/dress/westernbustle = 5, - /obj/item/clothing/under/wedding/bride_white = 5, - /obj/item/weapon/storage/backpack/ = 5, - /obj/item/weapon/storage/backpack/messenger = 5, - /obj/item/weapon/storage/backpack/satchel = 5) - prices = list(/obj/item/clothing/under/bathrobe = 50, - /obj/item/clothing/under/dress/black_corset = 50, - /obj/item/clothing/under/blazer = 50, - /obj/item/clothing/under/blazer/skirt = 50, - /obj/item/clothing/under/cheongsam = 50, - /obj/item/clothing/under/cheongsam/red = 50, - /obj/item/clothing/under/cheongsam/blue = 50, - /obj/item/clothing/under/cheongsam/black = 50, - /obj/item/clothing/under/cheongsam/darkred = 50, - /obj/item/clothing/under/cheongsam/green = 50, - /obj/item/clothing/under/cheongsam/purple = 50, - /obj/item/clothing/under/cheongsam/darkblue = 50, - /obj/item/clothing/under/croptop = 50, - /obj/item/clothing/under/croptop/red = 50, - /obj/item/clothing/under/croptop/grey = 50, - /obj/item/clothing/under/cuttop = 50, - /obj/item/clothing/under/cuttop/red = 50, - /obj/item/clothing/under/suit_jacket/female/skirt = 50, - /obj/item/clothing/under/dress/dress_fire = 50, - /obj/item/clothing/under/dress/flamenco = 50, - /obj/item/clothing/under/dress/flower_dress = 50, - /obj/item/clothing/under/fluff/gnshorts = 50, - /obj/item/clothing/under/color = 50, - /obj/item/clothing/under/color/aqua = 50, - /obj/item/clothing/under/color/black = 50, - /obj/item/clothing/under/color/blackf = 50, - /obj/item/clothing/under/color/blackjumpskirt = 50, - /obj/item/clothing/under/color/blue = 50, - /obj/item/clothing/under/color/brown = 50, - /obj/item/clothing/under/color/darkblue = 50, - /obj/item/clothing/under/color/darkred = 50, - /obj/item/clothing/under/color/green = 50, - /obj/item/clothing/under/color/grey = 50, - /obj/item/clothing/under/color/lightblue = 50, - /obj/item/clothing/under/color/lightbrown = 50, - /obj/item/clothing/under/color/lightgreen = 50, - /obj/item/clothing/under/color/lightpurple = 50, - /obj/item/clothing/under/color/lightred = 50, - /obj/item/clothing/under/color/orange = 50, - /obj/item/clothing/under/color/pink = 50, - /obj/item/clothing/under/color/prison = 50, - /obj/item/clothing/under/color/ranger = 50, - /obj/item/clothing/under/color/red = 50, - /obj/item/clothing/under/color/white = 50, - /obj/item/clothing/under/color/yellow = 50, - /obj/item/clothing/under/color/yellowgreen = 50, - /obj/item/clothing/under/corp/aether = 50, - /obj/item/clothing/under/corp/focal = 50, - /obj/item/clothing/under/corp/hephaestus = 50, - /obj/item/clothing/under/corp/wardt = 50, - /obj/item/clothing/under/kilt = 50, - /obj/item/clothing/under/fluff/latexmaid = 50, - /obj/item/clothing/under/dress/lilacdress = 50, - /obj/item/clothing/under/dress/white2 = 50, - /obj/item/clothing/under/dress/white4 = 50, - /obj/item/clothing/under/dress/maid = 50, - /obj/item/clothing/under/dress/maid/sexy = 50, - /obj/item/clothing/under/dress/maid/janitor = 50, - /obj/item/clothing/under/moderncoat = 50, - /obj/item/clothing/under/permit = 50, - /obj/item/clothing/under/oldwoman = 50, - /obj/item/clothing/under/frontier = 50, - /obj/item/clothing/under/mbill = 50, - /obj/item/clothing/under/pants/baggy/ = 50, - /obj/item/clothing/under/pants/baggy/classicjeans = 50, - /obj/item/clothing/under/pants/baggy/mustangjeans = 50, - /obj/item/clothing/under/pants/baggy/blackjeans = 50, - /obj/item/clothing/under/pants/baggy/greyjeans = 50, - /obj/item/clothing/under/pants/baggy/youngfolksjeans = 50, - /obj/item/clothing/under/pants/baggy/white = 50, - /obj/item/clothing/under/pants/baggy/red = 50, - /obj/item/clothing/under/pants/baggy/black = 50, - /obj/item/clothing/under/pants/baggy/tan = 50, - /obj/item/clothing/under/pants/baggy/track = 50, - /obj/item/clothing/under/pants/baggy/khaki = 50, - /obj/item/clothing/under/pants/baggy/camo = 50, - /obj/item/clothing/under/pants/utility/ = 50, - /obj/item/clothing/under/pants/utility/orange = 50, - /obj/item/clothing/under/pants/utility/blue = 50, - /obj/item/clothing/under/pants/utility/white = 50, - /obj/item/clothing/under/pants/utility/red = 50, - /obj/item/clothing/under/pants/chaps = 50, - /obj/item/clothing/under/pants/chaps/black = 50, - /obj/item/clothing/under/pants/track = 50, - /obj/item/clothing/under/pants/track/red = 50, - /obj/item/clothing/under/pants/track/white = 50, - /obj/item/clothing/under/pants/track/green = 50, - /obj/item/clothing/under/pants/track/blue = 50, - /obj/item/clothing/under/pants/yogapants = 50, - /obj/item/clothing/under/ascetic = 50, - /obj/item/clothing/under/dress/white3 = 50, - /obj/item/clothing/under/skirt/pleated = 50, - /obj/item/clothing/under/dress/darkred = 50, - /obj/item/clothing/under/dress/redeveninggown = 50, - /obj/item/clothing/under/dress/red_swept_dress = 50, - /obj/item/clothing/under/dress/sailordress = 50, - /obj/item/clothing/under/dress/sari = 50, - /obj/item/clothing/under/dress/sari/green = 50, - /obj/item/clothing/under/qipao = 50, - /obj/item/clothing/under/qipao/red = 50, - /obj/item/clothing/under/qipao/white = 50, - /obj/item/clothing/under/shorts/red = 50, - /obj/item/clothing/under/shorts/green = 50, - /obj/item/clothing/under/shorts/blue = 50, - /obj/item/clothing/under/shorts/black = 50, - /obj/item/clothing/under/shorts/grey = 50, - /obj/item/clothing/under/shorts/white = 50, - /obj/item/clothing/under/shorts/jeans = 50, - /obj/item/clothing/under/shorts/jeans/ = 50, - /obj/item/clothing/under/shorts/jeans/classic = 50, - /obj/item/clothing/under/shorts/jeans/mustang = 50, - /obj/item/clothing/under/shorts/jeans/youngfolks = 50, - /obj/item/clothing/under/shorts/jeans/black = 50, - /obj/item/clothing/under/shorts/jeans/grey = 50, - /obj/item/clothing/under/shorts/khaki/ = 50, - /obj/item/clothing/under/skirt/loincloth = 50, - /obj/item/clothing/under/skirt/khaki = 50, - /obj/item/clothing/under/skirt/blue = 50, - /obj/item/clothing/under/skirt/red = 50, - /obj/item/clothing/under/skirt/denim = 50, - /obj/item/clothing/under/skirt/pleated = 50, - /obj/item/clothing/under/skirt/outfit/plaid_blue = 50, - /obj/item/clothing/under/skirt/outfit/plaid_red = 50, - /obj/item/clothing/under/skirt/outfit/plaid_purple = 50, - /obj/item/clothing/under/overalls/sleek = 50, - /obj/item/clothing/under/sl_suit = 50, - /obj/item/clothing/under/gentlesuit = 50, - /obj/item/clothing/under/gentlesuit/skirt = 50, - /obj/item/clothing/under/suit_jacket = 50, - /obj/item/clothing/under/suit_jacket/really_black/skirt = 50, - /obj/item/clothing/under/suit_jacket/really_black = 50, - /obj/item/clothing/under/suit_jacket/female/skirt = 50, - /obj/item/clothing/under/suit_jacket/female/ = 50, - /obj/item/clothing/under/suit_jacket/red = 50, - /obj/item/clothing/under/suit_jacket/red/skirt = 50, - /obj/item/clothing/under/suit_jacket/charcoal = 50, - /obj/item/clothing/under/suit_jacket/charcoal/skirt = 50, - /obj/item/clothing/under/suit_jacket/navy = 50, - /obj/item/clothing/under/suit_jacket/navy/skirt = 50, - /obj/item/clothing/under/suit_jacket/burgundy = 50, - /obj/item/clothing/under/suit_jacket/burgundy/skirt = 50, - /obj/item/clothing/under/suit_jacket/checkered = 50, - /obj/item/clothing/under/suit_jacket/checkered/skirt = 50, - /obj/item/clothing/under/suit_jacket/tan = 50, - /obj/item/clothing/under/suit_jacket/tan/skirt = 50, - /obj/item/clothing/under/scratch = 50, - /obj/item/clothing/under/scratch/skirt = 50, - /obj/item/clothing/under/sundress = 50, - /obj/item/clothing/under/sundress_white = 50, - /obj/item/clothing/under/rank/psych/turtleneck/sweater = 50, - /obj/item/weapon/storage/box/fluff/swimsuit = 50, - /obj/item/weapon/storage/box/fluff/swimsuit/blue = 50, - /obj/item/weapon/storage/box/fluff/swimsuit/purple = 50, - /obj/item/weapon/storage/box/fluff/swimsuit/green = 50, - /obj/item/weapon/storage/box/fluff/swimsuit/red = 50, - /obj/item/weapon/storage/box/fluff/swimsuit/white = 50, - /obj/item/weapon/storage/box/fluff/swimsuit/earth = 50, - /obj/item/weapon/storage/box/fluff/swimsuit/engineering = 50, - /obj/item/weapon/storage/box/fluff/swimsuit/science = 50, - /obj/item/weapon/storage/box/fluff/swimsuit/security = 50, - /obj/item/weapon/storage/box/fluff/swimsuit/medical = 50, - /obj/item/weapon/storage/box/fluff/swimsuit/cowbikini = 50, - /obj/item/clothing/under/utility = 50, - /obj/item/clothing/under/utility/grey = 50, - /obj/item/clothing/under/utility/blue = 50, - /obj/item/clothing/under/fluff/v_nanovest = 50, - /obj/item/clothing/under/dress/westernbustle = 50, - /obj/item/clothing/under/wedding/bride_white = 50, - /obj/item/weapon/storage/backpack/ = 50, - /obj/item/weapon/storage/backpack/messenger = 50, - /obj/item/weapon/storage/backpack/satchel = 50) - premium = list(/obj/item/clothing/under/color/rainbow = 1) - contraband = list(/obj/item/clothing/under/rank/clown = 1) - /obj/machinery/vending/loadout/loadout_misc name = "Bits and Bobs" desc = "A special vendor for things and also stuff!" @@ -2365,6 +1172,7 @@ /obj/item/clothing/suit/storage/toggle/labcoat/pink = 5, /obj/item/clothing/suit/storage/toggle/labcoat/red = 5, /obj/item/clothing/suit/storage/toggle/labcoat/yellow = 5, + /obj/item/clothing/suit/storage/toggle/labcoat/old = 5, /obj/item/clothing/suit/leathercoat = 5, /obj/item/clothing/suit/storage/toggle/leather_jacket = 5, /obj/item/clothing/suit/storage/leather_jacket_alt = 5, @@ -2453,6 +1261,7 @@ /obj/item/clothing/suit/storage/toggle/labcoat/pink = 100, /obj/item/clothing/suit/storage/toggle/labcoat/red = 100, /obj/item/clothing/suit/storage/toggle/labcoat/yellow = 100, + /obj/item/clothing/suit/storage/toggle/labcoat/old = 100, /obj/item/clothing/suit/leathercoat = 100, /obj/item/clothing/suit/storage/toggle/leather_jacket = 100, /obj/item/clothing/suit/storage/leather_jacket_alt = 100, @@ -2646,6 +1455,67 @@ contraband = list(/obj/item/clothing/head/syndicatefake = 1, /obj/item/clothing/suit/syndicatefake = 1) +/obj/machinery/vending/loadout/gadget + name = "Chips Co." + desc = "A special vendor for devices and gadgets." + product_ads = "You can't RESIST our great deals!;Feeling disconnected? We have a gadget for you!;You know you have the capacity to buy our capacitors!;FILL THAT HOLE IN YOUR HEART WITH OUR PLASTIC DISTRACTIONS!!!;Devices for everyone! Chips Co.!;ROBUST INVENTORY, GREAT PRICES! ;DON'T FORGET THE oyPAD 13s PRO! ON SALE NOW, ONLY ONE THOUSAND THALERS!" + icon_state = "gadgets" + vend_delay = 11 + products = list(/obj/item/clothing/suit/circuitry = 1, + /obj/item/clothing/head/circuitry = 1, + /obj/item/clothing/shoes/circuitry = 1, + /obj/item/clothing/gloves/circuitry = 1, + /obj/item/clothing/under/circuitry = 1, + /obj/item/clothing/glasses/circuitry = 1, + /obj/item/clothing/ears/circuitry = 1, + /obj/item/device/text_to_speech = 5, + /obj/item/device/paicard = 5, + /obj/item/device/communicator = 10, + /obj/item/device/communicator/watch = 10, + /obj/item/device/radio = 10, + /obj/item/device/camera = 5, + /obj/item/device/taperecorder = 5, + /obj/item/modular_computer/tablet/preset/custom_loadout/cheap = 5, + /obj/item/device/pda = 10, + /obj/item/device/radio/headset = 10, + /obj/item/device/flashlight = 5, + /obj/item/device/laser_pointer = 3, + /obj/item/clothing/glasses/omnihud = 10, + /obj/item/device/walkpod = 5, + /obj/item/device/juke_remote = 1, + /obj/item/instrument/piano_synth/headphones = 2, // You're making a subsystem do work, I don't want it TOO busy + /obj/item/instrument/piano_synth/headphones/spacepods = 2, + /obj/item/clothing/gloves/bluespace = 5) + prices = list(/obj/item/clothing/suit/circuitry = 100, + /obj/item/clothing/head/circuitry = 100, + /obj/item/clothing/shoes/circuitry = 100, + /obj/item/clothing/gloves/circuitry = 100, + /obj/item/clothing/under/circuitry = 100, + /obj/item/clothing/glasses/circuitry = 100, + /obj/item/clothing/ears/circuitry = 100, + /obj/item/device/text_to_speech = 300, + /obj/item/device/paicard = 100, + /obj/item/device/communicator = 100, + /obj/item/device/communicator/watch = 100, + /obj/item/device/radio = 100, + /obj/item/device/camera = 100, + /obj/item/device/taperecorder = 100, + /obj/item/modular_computer/tablet/preset/custom_loadout/cheap = 1000, + /obj/item/device/pda = 50, + /obj/item/device/radio/headset = 50, + /obj/item/device/flashlight = 100, + /obj/item/device/laser_pointer = 200, + /obj/item/clothing/glasses/omnihud = 100, + /obj/item/device/walkpod = 300, + /obj/item/device/juke_remote = 1000, + /obj/item/instrument/piano_synth/headphones = 200, + /obj/item/instrument/piano_synth/headphones/spacepods = 600, + /obj/item/clothing/gloves/bluespace = 500) + premium = list(/obj/item/device/perfect_tele/one_beacon = 1) + contraband = list(/obj/item/weapon/disk/nifsoft/compliance = 1) + +// Loadout Vending Machines End + /obj/machinery/vending/entertainer name = "Thespian's Delight" desc = "Sometimes nerds need costumes!" @@ -2737,6 +1607,7 @@ /obj/item/clothing/shoes/knight_costume = 3, /obj/item/clothing/shoes/knight_costume/black = 3) +// Event Loadout Vending Machines Start /obj/machinery/vending/event //FOR FACILITATING AND EQUIPPING EVENTS, DO NOT PLACE ON THE NORMAL MAP// name = "Fingers and Toes" @@ -3408,6 +2279,36 @@ /obj/item/clothing/suit/space/rig/military = 5 ) +/obj/machinery/vending/event/gadget //FOR FACILITATING AND EQUIPPING EVENTS, DO NOT PLACE ON THE NORMAL MAP// + name = "Chips Co." + desc = "A special vendor for devices and gadgets." + product_ads = "You can't RESIST our great deals!;Feeling disconnected? We have a gadget for you!;You know you have the capacity to buy our capacitors!;FILL THAT HOLE IN YOUR HEART WITH OUR PLASTIC DISTRACTIONS!!!;Devices for everyone! Chips Co.!;ROBUST INVENTORY, GREAT PRICES! ;DON'T FORGET THE oyPAD 13s PRO! ON SALE NOW, ONLY ONE THOUSAND THALERS!" + icon_state = "gadgets" + vend_delay = 11 + products = list(/obj/item/clothing/suit/circuitry = 1, + /obj/item/clothing/head/circuitry = 1, + /obj/item/clothing/shoes/circuitry = 1, + /obj/item/clothing/gloves/circuitry = 1, + /obj/item/clothing/under/circuitry = 1, + /obj/item/clothing/glasses/circuitry = 1, + /obj/item/clothing/ears/circuitry = 1, + /obj/item/device/text_to_speech = 5, + /obj/item/device/paicard = 5, + /obj/item/device/communicator = 10, + /obj/item/device/communicator/watch = 10, + /obj/item/device/radio = 10, + /obj/item/device/camera = 5, + /obj/item/device/taperecorder = 5, + /obj/item/modular_computer/tablet/preset/custom_loadout/cheap = 5, + /obj/item/device/pda = 10, + /obj/item/device/radio/headset = 10, + /obj/item/device/flashlight = 5, + /obj/item/device/laser_pointer = 3, + /obj/item/clothing/glasses/omnihud = 10, + /obj/item/device/perfect_tele/one_beacon = 1, + /obj/item/weapon/disk/nifsoft/compliance = 1, + /obj/item/device/perfect_tele/alien = 10) + /obj/machinery/vending/event/costume //FOR FACILITATING AND EQUIPPING EVENTS, DO NOT PLACE ON THE NORMAL MAP// name = "Thespian's Delight" desc = "Sometimes nerds need costumes!" @@ -3488,6 +2389,9 @@ /obj/item/clothing/suit/syndicatefake = 1 ) +// Event Loadout Vending Machines End + +// Event Food Vending Machines Start /obj/machinery/vending/event/food //FOR FACILITATING/OUTFITTING EVENTS, DO NOT PUT THESE ON THE MAP// name = "Dog Food" @@ -4429,6 +3333,8 @@ /obj/item/weapon/reagent_containers/food/snacks/xenomeat/spidermeat = 10) vend_delay = 15 +// Event Food Vending Machines End + /obj/machinery/vending/emergencyfood name = "Food Cube Dispenser" desc = "An ominous machine dispensing food cubes. It will keep you fed, but at what cost?" @@ -4444,6 +3350,8 @@ contraband = list(/obj/item/weapon/storage/box/wings/tray = 20) /obj/machinery/vending/cola/soft + name = "Soft Robustdrinks" + desc = "A different vendor brand for soft drinks, taking off very successfully with its unique imagery and equal stock." icon = 'icons/obj/vending_vr.dmi' icon_state = "Cola_Machine" diff --git a/code/modules/economy/vending_refills.dm b/code/modules/economy/vending_refills.dm new file mode 100644 index 0000000000..b2c0188ef9 --- /dev/null +++ b/code/modules/economy/vending_refills.dm @@ -0,0 +1,161 @@ +/obj/item/weapon/refill_cartridge + name = "vending refill cartridge" + desc = "A specialized cartridge used to refill vending machines with fresh product. Tamper proof." + icon = 'icons/obj/refill_cartridges.dmi' + icon_state = "rc_generic" + item_state = "syringe_kit" + var/refill_type + +/obj/item/weapon/refill_cartridge/proc/can_refill(obj/machinery/vending/V as obj) + if(V.type == refill_type) + return TRUE + return FALSE + +/obj/item/weapon/refill_cartridge/multitype + refill_type = list() + var/refill_exceptions = list() + +/obj/item/weapon/refill_cartridge/multitype/can_refill(obj/machinery/vending/V as obj) + for(var/entry in refill_type) + if(istype(V, entry) && !(V.type in refill_exceptions)) + return TRUE + return FALSE + +/obj/item/weapon/refill_cartridge/autoname/Initialize() + ..() + if(refill_type && ispath(refill_type)) + var/atom/tmp = refill_type + src.name = "[initial(tmp.name)] refill cartridge" + +/obj/item/weapon/refill_cartridge/universal // For admin/event use. Can refill any refillable vendor. + name = "ultimate vending refill cartridge" + desc = "A universal cartridge used to refill vending machines with fresh product." + icon_state = "rc_mystery" + +/obj/item/weapon/refill_cartridge/universal/can_refill(obj/machinery/vending/V as obj) + return TRUE + +// Multi-vendor subtypes + +/obj/item/weapon/refill_cartridge/multitype/technical + name = "technical vendor refill cartridge" + icon_state = "rc_mechanical" + refill_type = list(/obj/machinery/vending/assist, + /obj/machinery/vending/tool, + /obj/machinery/vending/loadout/gadget) + +/obj/item/weapon/refill_cartridge/multitype/food + name = "food vendor refill cartridge" + icon_state = "rc_food" + refill_type = list(/obj/machinery/vending/snack, + /obj/machinery/vending/fitness, + /obj/machinery/vending/hotfood, + /obj/machinery/vending/weeb, + /obj/machinery/vending/sol, + /obj/machinery/vending/snix, + /obj/machinery/vending/snlvend, + /obj/machinery/vending/sovietvend) + +/obj/item/weapon/refill_cartridge/multitype/drink + name = "drinks vendor refill cartridge" + icon_state = "rc_drink" + refill_type = list(/obj/machinery/vending/coffee, + /obj/machinery/vending/cola, + /obj/machinery/vending/sovietsoda, + /obj/machinery/vending/bepis) + +/obj/item/weapon/refill_cartridge/multitype/smokes //Multitype version in case multiple smoke machine vendors exist in future. + name = "smoking vendor refill cartridge" + icon_state = "rc_generic" + refill_type = list(/obj/machinery/vending/cigarette) + +/obj/item/weapon/refill_cartridge/multitype/clothing + name = "clothing vendor refill cartridge" + icon_state = "rc_clothes" + refill_type = list(/obj/machinery/vending/wardrobe, + /obj/machinery/vending/loadout) + refill_exceptions = list(/obj/machinery/vending/loadout/gadget) + +/obj/item/weapon/refill_cartridge/multitype/specialty + name = "specialty vendor refill cartridge" + icon_state = "rc_generic" + refill_type = list(/obj/machinery/vending/cart, + /obj/machinery/vending/medical, + /obj/machinery/vending/phoronresearch, + /obj/machinery/vending/wallmed1, + /obj/machinery/vending/wallmed2, + /obj/machinery/vending/wallmed_airlock, + /obj/machinery/vending/security, + /obj/machinery/vending/hydronutrients, + /obj/machinery/vending/dinnerware, + /obj/machinery/vending/engivend, + /obj/machinery/vending/robotics, + /obj/machinery/vending/fishing, + /obj/machinery/vending/blood, + /obj/machinery/vending/entertainer) + +/obj/item/weapon/refill_cartridge/autoname/food + icon_state = "rc_food" + +/obj/item/weapon/refill_cartridge/autoname/food/snack + refill_type = /obj/machinery/vending/snack + +/obj/item/weapon/refill_cartridge/autoname/food/fitness + refill_type = /obj/machinery/vending/fitness + +/obj/item/weapon/refill_cartridge/autoname/food/hotfood + refill_type = /obj/machinery/vending/hotfood + +/obj/item/weapon/refill_cartridge/autoname/food/weeb + refill_type = /obj/machinery/vending/weeb + +/obj/item/weapon/refill_cartridge/autoname/food/sol + refill_type = /obj/machinery/vending/sol + +/obj/item/weapon/refill_cartridge/autoname/food/snix + refill_type = /obj/machinery/vending/snix + +/obj/item/weapon/refill_cartridge/autoname/food/snlvend + refill_type = /obj/machinery/vending/snlvend + +/obj/item/weapon/refill_cartridge/autoname/food/sovietvend + refill_type = /obj/machinery/vending/sovietvend + +/obj/item/weapon/refill_cartridge/autoname/drink + icon_state = "rc_drink" + +/obj/item/weapon/refill_cartridge/autoname/drink/coffee + refill_type = /obj/machinery/vending/coffee + +/obj/item/weapon/refill_cartridge/autoname/drink/cola + refill_type = /obj/machinery/vending/cola + +/obj/item/weapon/refill_cartridge/autoname/drink/cola_soft + refill_type = /obj/machinery/vending/cola/soft + +/obj/item/weapon/refill_cartridge/autoname/drink/sovietsoda + refill_type = /obj/machinery/vending/sovietsoda + +/obj/item/weapon/refill_cartridge/autoname/drink/bepis + refill_type = /obj/machinery/vending/bepis + +/obj/item/weapon/refill_cartridge/autoname/cigarette + icon_state = "rc_generic" + refill_type = /obj/machinery/vending/cigarette + +/obj/item/weapon/refill_cartridge/multitype/wardrobe + name = "specialized wardrobe refill cartridge" + icon_state = "rc_clothes" + refill_type = list(/obj/machinery/vending/wardrobe) + +/obj/item/weapon/refill_cartridge/autoname/technical + icon_state = "rc_mechanical" + +/obj/item/weapon/refill_cartridge/autoname/technical/assist + refill_type = /obj/machinery/vending/assist + +/obj/item/weapon/refill_cartridge/autoname/technical/tool + refill_type = /obj/machinery/vending/tool + +/obj/item/weapon/refill_cartridge/autoname/giftvendor + refill_type = /obj/machinery/vending/giftvendor \ No newline at end of file diff --git a/code/modules/games/cah_black_cards.dm b/code/modules/games/cah_black_cards.dm index 0bc5cc6d0f..c2c32b9948 100644 --- a/code/modules/games/cah_black_cards.dm +++ b/code/modules/games/cah_black_cards.dm @@ -1,4 +1,6 @@ -// Black cards. +/* + * Black CAH cards + */ /obj/item/weapon/deck/cah/black/card_text_list = list( "Why am I itchy?", "Today, Security shot ____.", diff --git a/code/modules/games/cah_white_cards.dm b/code/modules/games/cah_white_cards.dm index 0c10d3d1cb..861a2b1a0e 100644 --- a/code/modules/games/cah_white_cards.dm +++ b/code/modules/games/cah_white_cards.dm @@ -1,4 +1,6 @@ -// White cards. +/* + * White CAH cards + */ /obj/item/weapon/deck/cah/var/list/card_text_list = list( "Those motherfucking carp", "Having sex in the maintenance tunnels", diff --git a/code/modules/games/cardemon.dm b/code/modules/games/cardemon.dm index a99e656add..0345cf0d18 100644 --- a/code/modules/games/cardemon.dm +++ b/code/modules/games/cardemon.dm @@ -1,3 +1,6 @@ +/* + * Cardmon trading card game + */ /obj/item/weapon/pack/cardemon name = "cardemon booster pack" desc = "Finally! A children's card game in space!" diff --git a/code/modules/games/spaceball_cards.dm b/code/modules/games/spaceball_cards.dm index d9c932908c..48c5407759 100644 --- a/code/modules/games/spaceball_cards.dm +++ b/code/modules/games/spaceball_cards.dm @@ -1,3 +1,6 @@ +/* + * Spaceball collectable cards + */ /obj/item/weapon/pack/spaceball name = "spaceball booster pack" desc = "Officially licensed to take your money." diff --git a/code/modules/games/tarot.dm b/code/modules/games/tarot.dm index 7c49f7ec43..df5fb73b23 100644 --- a/code/modules/games/tarot.dm +++ b/code/modules/games/tarot.dm @@ -1,6 +1,6 @@ -/* this is a playing card deck based off of the Rider-Waite Tarot Deck. -*/ - +/* + * This is a playing card deck based off of the Rider-Waite Tarot Deck. + */ /obj/item/weapon/deck/tarot name = "deck of tarot cards" desc = "For all your occult needs!" diff --git a/code/modules/games/wizoff.dm b/code/modules/games/wizoff.dm new file mode 100644 index 0000000000..11cf179735 --- /dev/null +++ b/code/modules/games/wizoff.dm @@ -0,0 +1,57 @@ +/* It's Wiz-Off, the wizard themed card game! + * Each player draws 5 cards. There are five rounds. Each round, + * a player selects a card to play, and the winner is selected + * based on the following rules: + * -Defensive (D) beats Offensive (O)! + * -Offensive (O) beats Utility (U)! + * -Utility (U) beats Defensive (D)! + * -If both players play the same type of spell, the higher number wins! + * The player who wins the most of the 5 rounds wins the game! + * Now get ready to battle for the fate of the universe: Wiz-Off! + */ + +/obj/item/weapon/deck/wizoff + name = "\improper Wiz-Off deck" + desc = "A Wiz-Off deck. Fight an arcane battle for the fate of the universe: Draw 5! Play 5! Best of 5!" + icon_state = "wizoff" + +/obj/item/weapon/deck/wizoff/New() + ..() + var/datum/playingcard/P + for(var/cardtext in card_wiz_list) + P = new() + P.name = "[cardtext]" + P.card_icon = "[icon_state]_card" + P.back_icon = "[icon_state]_card_back" + cards += P + +/obj/item/weapon/deck/wizoff/var/list/card_wiz_list = list( + "O1: Spell Cards", + "O2: Summon Bees", + "O3: Polymorph", + "O4: Tesla Blast", + "O5: Rod Form", + "O6: Mutate", + "O7: Fireball", + "O8: Mjolnir", + "O9: Smite", + "D1: Smoke", + "D2: Battlemage Armor", + "D3: Repulse", + "D4: Magic Missile", + "D5: Disable Technology", + "D6: Spell Trap", + "D7: Forcewall", + "D8: Arcane Heal", + "D9: Stop Time", + "U1: Shapechange", + "U2: Spacetime Distortion", + "U3: Scrying Orb", + "U4: Blink", + "U5: Knock", + "U6: Teleport", + "U7: Bind Soul", + "U8: Warp Whistle", + "U9: Jaunt" + ) + diff --git a/code/modules/hydroponics/seed.dm b/code/modules/hydroponics/seed.dm index 2be6f3ee05..64c2be1887 100644 --- a/code/modules/hydroponics/seed.dm +++ b/code/modules/hydroponics/seed.dm @@ -190,7 +190,12 @@ var/clr if(get_trait(TRAIT_BIOLUM_COLOUR)) clr = get_trait(TRAIT_BIOLUM_COLOUR) - splat.set_light(get_trait(TRAIT_BIOLUM), l_color = clr) + //VOREStation Edit Start - Tons of super bright super long range lights everywhere is annoying and laggy, so let's limit it a bit. + var/blight = get_trait(TRAIT_BIOLUM) + if(blight >= 5) + blight = 5 + splat.set_light(blight, 0.5, l_color = clr) + //VOREStation Edit End var/flesh_colour = get_trait(TRAIT_FLESH_COLOUR) if(!flesh_colour) flesh_colour = get_trait(TRAIT_PRODUCT_COLOUR) if(flesh_colour) splat.color = get_trait(TRAIT_PRODUCT_COLOUR) @@ -839,8 +844,12 @@ var/clr if(get_trait(TRAIT_BIOLUM_COLOUR)) clr = get_trait(TRAIT_BIOLUM_COLOUR) - product.set_light(get_trait(TRAIT_BIOLUM), l_color = clr) - + //VOREStation Edit Start - Tons of super bright super long range lights everywhere is annoying and laggy, so let's limit it a bit. + var/blight = get_trait(TRAIT_BIOLUM) + if(blight >= 5) + blight = 5 + product.set_light(blight, 0.5, l_color = clr) + //VOREStation Edit End if(get_trait(TRAIT_STINGS)) product.force = 1 diff --git a/code/modules/hydroponics/spreading/spreading.dm b/code/modules/hydroponics/spreading/spreading.dm index 393089ebff..e820af130e 100644 --- a/code/modules/hydroponics/spreading/spreading.dm +++ b/code/modules/hydroponics/spreading/spreading.dm @@ -77,6 +77,10 @@ spread_chance = 0 /obj/effect/plant/New(var/newloc, var/datum/seed/newseed, var/obj/effect/plant/newparent) + //VOREStation Edit Start + if(istype(loc, /turf/simulated/open)) + qdel(src) + //VOREStation Edit End ..() if(!newparent) @@ -159,7 +163,12 @@ var/clr if(seed.get_trait(TRAIT_BIOLUM_COLOUR)) clr = seed.get_trait(TRAIT_BIOLUM_COLOUR) - set_light(1+round(seed.get_trait(TRAIT_POTENCY)/20), l_color = clr) + //VOREStation Edit Start - Tons of super bright super long range lights everywhere is annoying and laggy, so let's limit it a bit. + var/blight = 1+round(seed.get_trait(TRAIT_POTENCY)/20) + if(blight >= 5) + blight = 5 + set_light(blight, 0.5, l_color = clr) + //VOREStation Edit End return else set_light(0) diff --git a/code/modules/hydroponics/spreading/spreading_growth.dm b/code/modules/hydroponics/spreading/spreading_growth.dm index eebcbc9389..f85209884b 100644 --- a/code/modules/hydroponics/spreading/spreading_growth.dm +++ b/code/modules/hydroponics/spreading/spreading_growth.dm @@ -4,8 +4,10 @@ var/list/cardinal_neighbors = list() for(var/check_dir in cardinal) var/turf/simulated/T = get_step(get_turf(src), check_dir) - if(istype(T)) + //VOREStation Edit Start - Vines can go up/down stairs, but don't register that they have done this, so do so infinitely, which is annoying and laggy. + if(istype(T) && !istype(check_dir, /turf/simulated/open)) //Let's not have them go on open space where you can't really get to them. cardinal_neighbors |= T + //VOREStation Edit End return cardinal_neighbors /obj/effect/plant/proc/update_neighbors() @@ -114,6 +116,10 @@ //spreading vines aren't created on their final turf. //Instead, they are created at their parent and then move to their destination. /obj/effect/plant/proc/spread_to(turf/target_turf) + //VOREStation Edit Start - Vines can go up/down stairs, but don't register that they have done this, so do so infinitely, which is annoying and laggy. + if(istype(target_turf, /turf/simulated/open)) + return + //VOREStation Edit End var/obj/effect/plant/child = new(get_turf(src),seed,parent) spawn(1) // This should do a little bit of animation. diff --git a/code/modules/hydroponics/trays/tray_soil.dm b/code/modules/hydroponics/trays/tray_soil.dm index f396b00dbf..4a9e37e30e 100644 --- a/code/modules/hydroponics/trays/tray_soil.dm +++ b/code/modules/hydroponics/trays/tray_soil.dm @@ -41,6 +41,10 @@ icon_state = "blank" /obj/machinery/portable_atmospherics/hydroponics/soil/invisible/New(var/newloc,var/datum/seed/newseed) + //VOREStation Addition Start + if(istype(loc, /turf/simulated/open) || istype(loc, /turf/space)) + qdel(src) + //VOREStation Addition End ..() seed = newseed dead = 0 diff --git a/code/modules/materials/materials/metals/steel_vr.dm b/code/modules/materials/materials/metals/steel_vr.dm index b112f36217..818b41beaa 100644 --- a/code/modules/materials/materials/metals/steel_vr.dm +++ b/code/modules/materials/materials/metals/steel_vr.dm @@ -39,44 +39,44 @@ new /datum/stack_recipe("red sofa right", /obj/structure/bed/chair/sofa/right, 1, one_per_turf = 1, on_floor = 1), \ new /datum/stack_recipe("red sofa corner", /obj/structure/bed/chair/sofa/corner, 1, one_per_turf = 1, on_floor = 1), \ new /datum/stack_recipe("brown sofa middle", /obj/structure/bed/chair/sofa/brown, 1, one_per_turf = 1, on_floor = 1), \ - new /datum/stack_recipe("brown sofa left", /obj/structure/bed/chair/sofa/brown/left, 1, one_per_turf = 1, on_floor = 1), \ - new /datum/stack_recipe("brown sofa right", /obj/structure/bed/chair/sofa/brown/right, 1, one_per_turf = 1, on_floor = 1), \ - new /datum/stack_recipe("brown sofa corner", /obj/structure/bed/chair/sofa/brown/corner, 1, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("brown sofa left", /obj/structure/bed/chair/sofa/left/brown, 1, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("brown sofa right", /obj/structure/bed/chair/sofa/right/brown, 1, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("brown sofa corner", /obj/structure/bed/chair/sofa/corner/brown, 1, one_per_turf = 1, on_floor = 1), \ new /datum/stack_recipe("teal sofa middle", /obj/structure/bed/chair/sofa/teal, 1, one_per_turf = 1, on_floor = 1), \ - new /datum/stack_recipe("teal sofa left", /obj/structure/bed/chair/sofa/teal/left, 1, one_per_turf = 1, on_floor = 1), \ - new /datum/stack_recipe("teal sofa right", /obj/structure/bed/chair/sofa/teal/right, 1, one_per_turf = 1, on_floor = 1), \ - new /datum/stack_recipe("teal sofa corner", /obj/structure/bed/chair/sofa/teal/corner, 1, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("teal sofa left", /obj/structure/bed/chair/sofa/left/teal, 1, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("teal sofa right", /obj/structure/bed/chair/sofa/right/teal, 1, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("teal sofa corner", /obj/structure/bed/chair/sofa/corner/teal, 1, one_per_turf = 1, on_floor = 1), \ new /datum/stack_recipe("black sofa middle", /obj/structure/bed/chair/sofa/black, 1, one_per_turf = 1, on_floor = 1), \ - new /datum/stack_recipe("black sofa left", /obj/structure/bed/chair/sofa/black/left, 1, one_per_turf = 1, on_floor = 1), \ - new /datum/stack_recipe("black sofa right", /obj/structure/bed/chair/sofa/black/right, 1, one_per_turf = 1, on_floor = 1), \ - new /datum/stack_recipe("black sofa corner", /obj/structure/bed/chair/sofa/black/corner, 1, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("black sofa left", /obj/structure/bed/chair/sofa/left/black, 1, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("black sofa right", /obj/structure/bed/chair/sofa/right/black, 1, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("black sofa corner", /obj/structure/bed/chair/sofa/corner/black, 1, one_per_turf = 1, on_floor = 1), \ new /datum/stack_recipe("green sofa middle", /obj/structure/bed/chair/sofa/green, 1, one_per_turf = 1, on_floor = 1), \ - new /datum/stack_recipe("green sofa left", /obj/structure/bed/chair/sofa/green/left, 1, one_per_turf = 1, on_floor = 1), \ - new /datum/stack_recipe("green sofa right", /obj/structure/bed/chair/sofa/green/right, 1, one_per_turf = 1, on_floor = 1), \ - new /datum/stack_recipe("green sofa corner", /obj/structure/bed/chair/sofa/green/corner, 1, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("green sofa left", /obj/structure/bed/chair/sofa/left/green, 1, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("green sofa right", /obj/structure/bed/chair/sofa/right/green, 1, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("green sofa corner", /obj/structure/bed/chair/sofa/corner/green, 1, one_per_turf = 1, on_floor = 1), \ new /datum/stack_recipe("purple sofa middle", /obj/structure/bed/chair/sofa/purp, 1, one_per_turf = 1, on_floor = 1), \ - new /datum/stack_recipe("purple sofa left", /obj/structure/bed/chair/sofa/purp/left, 1, one_per_turf = 1, on_floor = 1), \ - new /datum/stack_recipe("purple sofa right", /obj/structure/bed/chair/sofa/purp/right, 1, one_per_turf = 1, on_floor = 1), \ - new /datum/stack_recipe("purple sofa corner", /obj/structure/bed/chair/sofa/purp/corner, 1, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("purple sofa left", /obj/structure/bed/chair/sofa/left/purp, 1, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("purple sofa right", /obj/structure/bed/chair/sofa/right/purp, 1, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("purple sofa corner", /obj/structure/bed/chair/sofa/corner/purp, 1, one_per_turf = 1, on_floor = 1), \ new /datum/stack_recipe("blue sofa middle", /obj/structure/bed/chair/sofa/blue, 1, one_per_turf = 1, on_floor = 1), \ - new /datum/stack_recipe("blue sofa left", /obj/structure/bed/chair/sofa/blue/left, 1, one_per_turf = 1, on_floor = 1), \ - new /datum/stack_recipe("blue sofa right", /obj/structure/bed/chair/sofa/blue/right, 1, one_per_turf = 1, on_floor = 1), \ - new /datum/stack_recipe("blue sofa corner", /obj/structure/bed/chair/sofa/blue/corner, 1, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("blue sofa left", /obj/structure/bed/chair/sofa/left/blue, 1, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("blue sofa right", /obj/structure/bed/chair/sofa/right/blue, 1, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("blue sofa corner", /obj/structure/bed/chair/sofa/corner/blue, 1, one_per_turf = 1, on_floor = 1), \ new /datum/stack_recipe("beige sofa middle", /obj/structure/bed/chair/sofa/beige, 1, one_per_turf = 1, on_floor = 1), \ - new /datum/stack_recipe("beige sofa left", /obj/structure/bed/chair/sofa/beige/left, 1, one_per_turf = 1, on_floor = 1), \ - new /datum/stack_recipe("beige sofa right", /obj/structure/bed/chair/sofa/beige/right, 1, one_per_turf = 1, on_floor = 1), \ - new /datum/stack_recipe("beige sofa corner", /obj/structure/bed/chair/sofa/beige/corner, 1, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("beige sofa left", /obj/structure/bed/chair/sofa/left/beige, 1, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("beige sofa right", /obj/structure/bed/chair/sofa/right/beige, 1, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("beige sofa corner", /obj/structure/bed/chair/sofa/corner/beige, 1, one_per_turf = 1, on_floor = 1), \ new /datum/stack_recipe("lime sofa middle", /obj/structure/bed/chair/sofa/lime, 1, one_per_turf = 1, on_floor = 1), \ - new /datum/stack_recipe("lime sofa left", /obj/structure/bed/chair/sofa/lime/left, 1, one_per_turf = 1, on_floor = 1), \ - new /datum/stack_recipe("lime sofa right", /obj/structure/bed/chair/sofa/lime/right, 1, one_per_turf = 1, on_floor = 1), \ - new /datum/stack_recipe("lime sofa corner", /obj/structure/bed/chair/sofa/lime/corner, 1, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("lime sofa left", /obj/structure/bed/chair/sofa/left/lime, 1, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("lime sofa right", /obj/structure/bed/chair/sofa/right/lime, 1, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("lime sofa corner", /obj/structure/bed/chair/sofa/corner/lime, 1, one_per_turf = 1, on_floor = 1), \ new /datum/stack_recipe("yellow sofa middle", /obj/structure/bed/chair/sofa/yellow, 1, one_per_turf = 1, on_floor = 1), \ - new /datum/stack_recipe("yellow sofa left", /obj/structure/bed/chair/sofa/yellow/left, 1, one_per_turf = 1, on_floor = 1), \ - new /datum/stack_recipe("yellow sofa right", /obj/structure/bed/chair/sofa/yellow/right, 1, one_per_turf = 1, on_floor = 1), \ - new /datum/stack_recipe("yellow sofa corner", /obj/structure/bed/chair/sofa/yellow/corner, 1, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("yellow sofa left", /obj/structure/bed/chair/sofa/left/yellow, 1, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("yellow sofa right", /obj/structure/bed/chair/sofa/right/yellow, 1, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("yellow sofa corner", /obj/structure/bed/chair/sofa/corner/yellow, 1, one_per_turf = 1, on_floor = 1), \ new /datum/stack_recipe("orange sofa middle", /obj/structure/bed/chair/sofa/orange, 1, one_per_turf = 1, on_floor = 1), \ - new /datum/stack_recipe("orange sofa left", /obj/structure/bed/chair/sofa/orange/left, 1, one_per_turf = 1, on_floor = 1), \ - new /datum/stack_recipe("orange sofa right", /obj/structure/bed/chair/sofa/orange/right, 1, one_per_turf = 1, on_floor = 1), \ - new /datum/stack_recipe("orange sofa corner", /obj/structure/bed/chair/sofa/orange/corner, 1, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("orange sofa left", /obj/structure/bed/chair/sofa/left/orange, 1, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("orange sofa right", /obj/structure/bed/chair/sofa/right/orange, 1, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("orange sofa corner", /obj/structure/bed/chair/sofa/corner/orange, 1, one_per_turf = 1, on_floor = 1), \ )), ) diff --git a/code/modules/mob/living/simple_mob/subtypes/slime/slime.dm b/code/modules/mob/living/simple_mob/subtypes/slime/slime.dm index 7eff7a4da8..be42d57fc6 100644 --- a/code/modules/mob/living/simple_mob/subtypes/slime/slime.dm +++ b/code/modules/mob/living/simple_mob/subtypes/slime/slime.dm @@ -162,6 +162,10 @@ var/list/_slime_default_emotes = list( return TRUE else return FALSE + if(ishuman(L)) + var/mob/living/carbon/human/H = L + if(istype(H.species, /datum/species/monkey)) // Monke always food + return FALSE // The other stuff was already checked in parent proc, and the . variable will implicitly return the correct value. // Slimes regenerate passively. diff --git a/code/modules/mob/living/simple_mob/subtypes/slime/xenobio/defense.dm b/code/modules/mob/living/simple_mob/subtypes/slime/xenobio/defense.dm index 51266a6d88..7e0eab5a36 100644 --- a/code/modules/mob/living/simple_mob/subtypes/slime/xenobio/defense.dm +++ b/code/modules/mob/living/simple_mob/subtypes/slime/xenobio/defense.dm @@ -51,4 +51,4 @@ // Getting slimebatoned/xenotased. /mob/living/simple_mob/slime/xenobio/slimebatoned(mob/living/user, amount) adjust_discipline(round(amount/2)) - Weaken(amount) // This needs to come afterwards or else it will always be considered abuse to the slime. + Weaken(amount*5) // This needs to come afterwards or else it will always be considered abuse to the slime. Multiply by 5 for stun to not end instantly. diff --git a/code/modules/mob/living/simple_mob/subtypes/slime/xenobio/subtypes.dm b/code/modules/mob/living/simple_mob/subtypes/slime/xenobio/subtypes.dm index d8f524d733..72d32abb8c 100644 --- a/code/modules/mob/living/simple_mob/subtypes/slime/xenobio/subtypes.dm +++ b/code/modules/mob/living/simple_mob/subtypes/slime/xenobio/subtypes.dm @@ -563,7 +563,7 @@ /datum/modifier/aura/slime_heal name = "slime mending" - desc = "You feel somewhat gooy." + desc = "You feel somewhat gooey." mob_overlay_state = "pink_sparkles" stacks = MODIFIER_STACK_FORBID aura_max_distance = 2 @@ -605,6 +605,7 @@ ) /mob/living/simple_mob/slime/xenobio/gold/slimebatoned(mob/living/user, amount) + adjust_discipline(round(amount/2)) power_charge = between(0, power_charge + amount, 10) /mob/living/simple_mob/slime/xenobio/gold/get_description_interaction() // So it doesn't say to use a baton on them. diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/morph/morph.dm b/code/modules/mob/living/simple_mob/subtypes/vore/morph/morph.dm index 329b747f97..1622321c52 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/morph/morph.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/morph/morph.dm @@ -6,10 +6,11 @@ desc = "A revolting, pulsating pile of flesh." tt_desc = "morphus shapeshiftus" icon = 'icons/mob/animal_vr.dmi' - icon_state = "morph" - icon_living = "morph" - icon_dead = "morph_dead" + icon_state = "new_morph" + icon_living = "new_morph" + icon_dead = "new_morph_dead" icon_rest = null + color = "#658a62" movement_cooldown = 1 status_flags = CANPUSH pass_flags = PASSTABLE @@ -25,8 +26,8 @@ max_n2 = 0 minbodytemp = 0 - maxHealth = 250 - health = 250 + maxHealth = 50 + health = 50 taser_kill = FALSE melee_damage_lower = 15 melee_damage_upper = 20 @@ -42,6 +43,8 @@ showvoreprefs = 0 vore_active = 1 + vore_default_mode = DM_HOLD + var/morphed = FALSE var/tooltip = TRUE @@ -50,6 +53,8 @@ var/atom/movable/form = null var/morph_time = 0 var/our_size_multiplier = 1 + var/original_ckey + var/chosen_color var/static/list/blacklist_typecache = typecacheof(list( /obj/screen, /obj/singularity, @@ -58,6 +63,10 @@ /mob/living/simple_mob/vore/hostile/morph/Initialize() verbs += /mob/living/proc/ventcrawl + verbs += /mob/living/simple_mob/vore/hostile/morph/proc/take_over_prey + if(!istype(src, /mob/living/simple_mob/vore/hostile/morph/dominated_prey)) + verbs += /mob/living/simple_mob/vore/hostile/morph/proc/morph_color + return ..() /mob/living/simple_mob/vore/hostile/morph/Destroy() @@ -70,7 +79,7 @@ /mob/living/simple_mob/vore/hostile/morph/examine(mob/user) if(morphed) . = form.examine(user) - if(get_dist(user, src) <= 3) + if(get_dist(user, src) <= 3 && !resting) . += "[form] doesn't look quite right..." else . = ..() @@ -100,6 +109,7 @@ form = target visible_message("[src] suddenly twists and changes shape, becoming a copy of [target]!") + color = null name = target.name desc = target.desc icon = target.icon @@ -149,7 +159,10 @@ icon_state = initial(icon_state) alpha = initial(alpha) - color = initial(color) + if(chosen_color) + color = chosen_color + else + color = initial(color) plane = initial(plane) layer = initial(layer) @@ -193,6 +206,22 @@ var/temp_state = icon_state ..() icon_state = temp_state + //Stolen from protean blobs, ambush noms from resting! Doesn't hide you any better, but makes noms sneakier. + if(resting) + plane = ABOVE_OBJ_PLANE + to_chat(src,"Your form settles in, appearing more 'normal'... laying in wait.") + else + plane = MOB_PLANE + to_chat(src,"Your form quivers back to life, allowing you to move again!") + if(can_be_drop_pred) //Toggleable in vore panel + var/list/potentials = living_mobs(0) + if(potentials.len) + var/mob/living/target = pick(potentials) + if(istype(target) && target.devourable && target.can_be_drop_prey && vore_selected) + if(target.buckled) + target.buckled.unbuckle_mob(target, force = TRUE) + target.forceMove(vore_selected) + to_chat(target,"\The [src] quickly engulfs you, [vore_selected.vore_verb]ing you into their [vore_selected.name]!") else ..() @@ -215,3 +244,130 @@ src.transform = M else ..() + +/mob/living/simple_mob/vore/hostile/morph/proc/morph_color() + set name = "Pick Color" + set category = "Abilities" + set desc = "You can set your color!" + var/newcolor = input(usr, "Choose a color.", "", color) as color|null + if(newcolor) + color = newcolor + chosen_color = newcolor + + +/mob/living/simple_mob/vore/hostile/morph/proc/take_over_prey() + set name = "Take Over Prey" + set category = "Abilities" + set desc = "Take command of your prey's body." + if(morphed) + to_chat(src, "You must restore to your original form first!") + return + var/list/possible_mobs = list() + for(var/obj/belly/B in src.vore_organs) + for(var/mob/living/carbon/human/H in B) + if(ishuman(H) && H.ckey) + possible_mobs += H + else + continue + var/mob/living/carbon/human/M + var/input = tgui_input_list(src, "Select a mob to take over:", "Take Over Prey", possible_mobs) + if(!input) + return + M = input + if(!M) + return + if(M.resleeve_lock && ckey != M.resleeve_lock) + to_chat(src, "\The [M] cannot be impersonated!") + return + if(tgui_alert(src, "You selected [M] to attempt to take over. Are you sure?", "Take Over Prey",list("No","Yes")) == "Yes") + log_admin("[key_name_admin(src)] offered [M] to swap bodies as a morph.") + if(tgui_alert(M, "\The [src] has elected to attempt to take over your body and control you. Is this something you will allow to happen?", "Allow Morph To Take Over",list("No","Yes")) == "Yes") + if(tgui_alert(M, "Are you sure? The only way to undo this on your own is to OOC Escape.", "Allow Morph To Take Over",list("No","Yes")) == "Yes") + if(buckled) + buckled.unbuckle_mob() + if(M.buckled) + M.buckled.unbuckle_mob() + if(LAZYLEN(buckled_mobs)) + for(var/buckledmob in buckled_mobs) + riding_datum.force_dismount(buckledmob) + if(LAZYLEN(M.buckled_mobs)) + for(var/p_buckledmob in M.buckled_mobs) + M.riding_datum.force_dismount(p_buckledmob) + if(pulledby) + pulledby.stop_pulling() + if(M.pulledby) + M.pulledby.stop_pulling() + stop_pulling() + original_ckey = ckey + log_and_message_admins("[key_name_admin(src)] has swapped bodies with [key_name_admin(M)] as a morph at [get_area(src)] - [COORD(src)].") + new /mob/living/simple_mob/vore/hostile/morph/dominated_prey(M.vore_selected, M.ckey, src, M) + else + to_chat(src, "\The [M] declined your request for control.") + else + to_chat(src, "\The [M] declined your request for control.") + +/mob/living/simple_mob/vore/hostile/morph/dominated_prey + name = "subservient node" + color = "#171717" + digestable = 0 + devourable = 0 + var/mob/living/simple_mob/vore/hostile/morph/parent_morph + var/mob/living/carbon/human/prey_body + var/prey_ckey + + +/mob/living/simple_mob/vore/hostile/morph/dominated_prey/New(loc, pckey, parent, prey) + . = ..() + if(pckey) + prey_ckey = pckey + parent_morph = parent + prey_body = prey + prey_body.forceMove(get_turf(parent_morph)) + ckey = prey_ckey + prey_body.ckey = parent_morph.original_ckey + parent_morph.forceMove(src) + name = "[prey_body.name]" + to_chat(prey_body, "You have completely assumed the form of [prey_body]. Your form is now unable to change anymore until you restore control back to them. You can do this by 'ejecting' them from your [prey_body.vore_selected]. This will not actually release them from your body in this state, but instead return control to them, and restore you to your original form.") + else + qdel(src) + +/mob/living/simple_mob/vore/hostile/morph/dominated_prey/death(gibbed) + . = ..() + undo_prey_takeover(FALSE) + + +/mob/living/simple_mob/vore/hostile/morph/dominated_prey/Destroy() + . = ..() + parent_morph = null + prey_body = null + +/mob/living/simple_mob/vore/hostile/morph/dominated_prey/proc/undo_prey_takeover(ooc_escape) + if(buckled) + buckled.unbuckle_mob() + if(prey_body.buckled) + prey_body.buckled.unbuckle_mob() + if(LAZYLEN(buckled_mobs)) + for(var/buckledmob in buckled_mobs) + riding_datum.force_dismount(buckledmob) + if(LAZYLEN(prey_body.buckled_mobs)) + for(var/p_buckledmob in prey_body.buckled_mobs) + prey_body.riding_datum.force_dismount(p_buckledmob) + if(pulledby) + pulledby.stop_pulling() + if(prey_body.pulledby) + prey_body.pulledby.stop_pulling() + stop_pulling() + + if(ooc_escape) + prey_body.forceMove(get_turf(src)) + parent_morph.forceMove(get_turf(src)) + parent_morph.ckey = parent_morph.original_ckey + prey_body.ckey = prey_ckey + log_and_message_admins("[key_name_admin(prey_body)] used the OOC escape button to get out of [key_name_admin(parent_morph)]. They have been returned to their original bodies. [ADMIN_FLW(src)]") + else + parent_morph.forceMove(get_turf(prey_body)) + parent_morph.ckey = parent_morph.original_ckey + prey_body.ckey = prey_ckey + prey_body.forceMove(parent_morph.vore_selected) + log_and_message_admins("[key_name_admin(prey_body)] and [key_name_admin(parent_morph)] have been returned to their original bodies. [get_area(src)] - [COORD(src)].") + qdel(src) diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/softdog.dm b/code/modules/mob/living/simple_mob/subtypes/vore/softdog.dm index 97f5e636f5..be4e903681 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/softdog.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/softdog.dm @@ -263,4 +263,53 @@ visible_message("[src] stops playing dead.", runemessage = "[src] stops playing dead") else M.visible_message("The petting was interrupted!!!", runemessage = "The petting was interrupted") - return \ No newline at end of file + return + +/mob/living/simple_mob/vore/woof/hostile/aweful + maxHealth = 100 + health = 100 + var/killswitch = FALSE + + +/mob/living/simple_mob/vore/woof/hostile/aweful/Initialize() + . = ..() + var/thismany = (rand(25,500)) / 100 + resize(thismany, animate = FALSE, uncapped = TRUE, ignore_prefs = TRUE) + +/mob/living/simple_mob/vore/woof/hostile/aweful/death() + . = ..() + if(killswitch) + visible_message("\The [src] evaporates into nothing...") + qdel(src) + return + var/thismany = rand(0,3) + var/list/possiblewoofs = list(/mob/living/simple_mob/vore/woof/hostile/aweful/melee, /mob/living/simple_mob/vore/woof/hostile/aweful/ranged) + if(thismany == 0) + visible_message("\The [src] evaporates into nothing...") + if(thismany >= 1) + var/thiswoof = pick(possiblewoofs) + new thiswoof(loc, src) + visible_message("Another [src] appears!") + if(thismany >= 2) + var/thiswoof = pick(possiblewoofs) + new thiswoof(loc, src) + visible_message("Another [src] appears!") + if(thismany >= 3) + var/thiswoof = pick(possiblewoofs) + new thiswoof(loc, src) + visible_message("Another [src] appears!") + qdel(src) + +/mob/living/simple_mob/vore/woof/hostile/aweful/melee + + movement_cooldown = 0 + + ai_holder_type = /datum/ai_holder/simple_mob/woof/hostile + +/mob/living/simple_mob/vore/woof/hostile/aweful/ranged + movement_cooldown = 0 + + ai_holder_type = /datum/ai_holder/simple_mob/ranged/kiting/threatening/woof + + projectiletype = /obj/item/projectile/awoo_missile + projectilesound = 'sound/voice/long_awoo.ogg' diff --git a/code/modules/mob/new_player/sprite_accessories_ear_vr.dm b/code/modules/mob/new_player/sprite_accessories_ear_vr.dm index 7e6c6317f1..65acf1d25a 100644 --- a/code/modules/mob/new_player/sprite_accessories_ear_vr.dm +++ b/code/modules/mob/new_player/sprite_accessories_ear_vr.dm @@ -754,6 +754,16 @@ do_colouration = 1 color_blend_mode = ICON_MULTIPLY +/datum/sprite_accessory/ears/bnnuy2 + name = "Bnnuy Ears 2" + desc = "" + icon = 'icons/mob/vore/ears_32x64.dmi' + icon_state = "bnnuy2" + extra_overlay = "bnnuy-inner" + extra_overlay2 = "bnnuy-tips2" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + /datum/sprite_accessory/ears/sandfox name = "Sandfox Ears" desc = "" diff --git a/code/modules/mob/new_player/sprite_accessories_tail.dm b/code/modules/mob/new_player/sprite_accessories_tail.dm index 2f0940b7a6..06dcdb9ebb 100644 --- a/code/modules/mob/new_player/sprite_accessories_tail.dm +++ b/code/modules/mob/new_player/sprite_accessories_tail.dm @@ -231,13 +231,6 @@ desc = "" icon_state = "beethorax" -/datum/sprite_accessory/tail/doublekitsune - name = "double kitsune tail, colorable" - desc = "" - icon_state = "doublekitsune" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - /datum/sprite_accessory/tail/spade_color name = "spade-tail (colorable)" desc = "" @@ -909,6 +902,20 @@ do_colouration = 1 color_blend_mode = ICON_MULTIPLY +/datum/sprite_accessory/tail/fox_tail + name = "Fox tail, colorable" + desc = "" + icon_state = "fox_tail_s" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + +/datum/sprite_accessory/tail/fox_tail_plain + name = "Fox tail, colorable, plain" + desc = "" + icon_state = "fox_tail_plain_s" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + /datum/sprite_accessory/tail/foxtail name = "Fox tail, colourable (vwag)" desc = "" @@ -919,6 +926,21 @@ ani_state = "foxtail_w" extra_overlay_w = "foxtail-tips_w" +/datum/sprite_accessory/tail/doublekitsune + name = "Kitsune 2 tails, colorable" + desc = "" + icon_state = "doublekitsune" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + +/datum/sprite_accessory/tail/doublekitsunealt + name = "Kitsune 2 tails, colorable, alt" + desc = "" + icon_state = "doublekitsunealt" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + extra_overlay = "doublekitsunealt-tips" + /datum/sprite_accessory/tail/triplekitsune_colorable name = "Kitsune 3 tails, colorable" desc = "" @@ -927,6 +949,14 @@ color_blend_mode = ICON_MULTIPLY extra_overlay = "triplekitsune_tips" +/datum/sprite_accessory/tail/sevenkitsune_colorable + name = "Kitsune 7 tails, colorable" + desc = "" + icon_state = "sevenkitsune" + extra_overlay = "sevenkitsune-tips" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + /datum/sprite_accessory/tail/ninekitsune_colorable name = "Kitsune 9 tails, colorable" desc = "" @@ -935,6 +965,16 @@ color_blend_mode = ICON_MULTIPLY extra_overlay = "ninekitsune-tips" +/datum/sprite_accessory/tail/hideableninetails + name = "Kitsune 9-in-1 tail, colourable (vwag)" + desc = "" + icon_state = "ninekitsune" + extra_overlay = "ninekitsune-tips" + do_colouration = TRUE + color_blend_mode = ICON_MULTIPLY + ani_state = "foxtail_w" + extra_overlay_w = "foxtail-tips_w" + /datum/sprite_accessory/tail/shadekin_short name = "Shadekin Short Tail, colorable" desc = "" diff --git a/code/modules/mob/new_player/sprite_accessories_tail_vr.dm b/code/modules/mob/new_player/sprite_accessories_tail_vr.dm index 1fd347ec47..a1c1034be5 100644 --- a/code/modules/mob/new_player/sprite_accessories_tail_vr.dm +++ b/code/modules/mob/new_player/sprite_accessories_tail_vr.dm @@ -211,13 +211,6 @@ desc = "" icon_state = "beethorax" -/datum/sprite_accessory/tail/doublekitsune - name = "double kitsune tail, colorable" - desc = "" - icon_state = "doublekitsune" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - /datum/sprite_accessory/tail/spade_color name = "spade-tail (colorable)" desc = "" @@ -964,6 +957,52 @@ do_colouration = 1 color_blend_mode = ICON_MULTIPLY +/datum/sprite_accessory/tail/fennec_tail + name = "Fennec tail" + desc = "" + icon_state = "fennec_tail_s" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + +/datum/sprite_accessory/tail/fox_tail + name = "Fox tail, colorable" + desc = "" + icon_state = "fox_tail_s" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + +/datum/sprite_accessory/tail/fox_tail_plain + name = "Fox tail, colorable, plain" + desc = "" + icon_state = "fox_tail_plain_s" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + +/datum/sprite_accessory/tail/foxtail + name = "Fox tail, colourable (vwag)" + desc = "" + icon_state = "foxtail" + extra_overlay = "foxtail-tips" + do_colouration = TRUE + color_blend_mode = ICON_MULTIPLY + ani_state = "foxtail_w" + extra_overlay_w = "foxtail-tips_w" + +/datum/sprite_accessory/tail/doublekitsune + name = "Kitsune 2 tails, colorable" + desc = "" + icon_state = "doublekitsune" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + +/datum/sprite_accessory/tail/doublekitsunealt + name = "Kitsune 2 tails, colorable, alt" + desc = "" + icon_state = "doublekitsunealt" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + extra_overlay = "doublekitsunealt-tips" + /datum/sprite_accessory/tail/triplekitsune_colorable name = "Kitsune 3 tails, colorable" desc = "" @@ -972,6 +1011,14 @@ color_blend_mode = ICON_MULTIPLY extra_overlay = "triplekitsune_tips" +/datum/sprite_accessory/tail/sevenkitsune_colorable + name = "Kitsune 7 tails, colorable" + desc = "" + icon_state = "sevenkitsune" + extra_overlay = "sevenkitsune-tips" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + /datum/sprite_accessory/tail/ninekitsune_colorable name = "Kitsune 9 tails, colorable" desc = "" @@ -980,6 +1027,16 @@ color_blend_mode = ICON_MULTIPLY extra_overlay = "ninekitsune-tips" +/datum/sprite_accessory/tail/hideableninetails + name = "Kitsune 9-in-1 tail, colourable (vwag)" + desc = "" + icon_state = "ninekitsune" + extra_overlay = "ninekitsune-tips" + do_colouration = TRUE + color_blend_mode = ICON_MULTIPLY + ani_state = "foxtail_w" + extra_overlay_w = "foxtail-tips_w" + /datum/sprite_accessory/tail/shadekin_short name = "Shadekin Short Tail, colorable" desc = "" @@ -1058,27 +1115,6 @@ ani_state = "Segmentedtail_w" extra_overlay_w = "Segmentedlights_w" -/datum/sprite_accessory/tail/fox_tail - name = "Fox tail" - desc = "" - icon_state = "fox_tail_s" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - -/datum/sprite_accessory/tail/fox_tail_plain - name = "Fox tail" - desc = "" - icon_state = "fox_tail_plain_s" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - -/datum/sprite_accessory/tail/fennec_tail - name = "Fennec tail" - desc = "" - icon_state = "fennec_tail_s" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - /datum/sprite_accessory/tail/lizard_tail_smooth name = "Lizard Tail (Smooth)" desc = "" diff --git a/code/modules/multiz/stairs.dm b/code/modules/multiz/stairs.dm index 5ce4b2ec26..59e6374895 100644 --- a/code/modules/multiz/stairs.dm +++ b/code/modules/multiz/stairs.dm @@ -148,10 +148,12 @@ // Or if we fell down the openspace if((top in oldloc) || oldloc == GetAbove(src)) return - + //VOREStation Addition Start + if(istype(AM, /obj/effect/plant)) + return + //VOREStation Addition End if(isobserver(AM)) // Ghosts have their own methods for going up and down return - if(AM.pulledby) // Animating the movement of pulled things is handled when the puller goes up the stairs return @@ -199,7 +201,10 @@ /obj/structure/stairs/bottom/use_stairs_instant(var/atom/movable/AM) if(isobserver(AM)) // Ghosts have their own methods for going up and down return - + //VOREStation Addition Start + if(istype(AM, /obj/effect/plant)) + return + //VOREStation Addition End if(isliving(AM)) var/mob/living/L = AM @@ -401,10 +406,12 @@ // Or if we climb up the middle if((bottom in oldloc) || oldloc == GetBelow(src)) return - + //VOREStation Addition Start + if(istype(AM, /obj/effect/plant)) + return + //VOREStation Addition End if(isobserver(AM)) // Ghosts have their own methods for going up and down return - if(AM.pulledby) // Animating the movement of pulled things is handled when the puller goes up the stairs return @@ -450,10 +457,12 @@ /obj/structure/stairs/top/use_stairs_instant(var/atom/movable/AM) if(isobserver(AM)) // Ghosts have their own methods for going up and down return - + //VOREStation Addition Start + if(istype(AM, /obj/effect/plant)) + return + //VOREStation Addition End if(isliving(AM)) var/mob/living/L = AM - if(L.grabbed_by.len) // Same as pulledby, whoever's holding you will keep you from going down stairs. return diff --git a/code/modules/projectiles/ammunition.dm b/code/modules/projectiles/ammunition.dm index 67524ac86c..46736474b7 100644 --- a/code/modules/projectiles/ammunition.dm +++ b/code/modules/projectiles/ammunition.dm @@ -246,3 +246,39 @@ magazine_icondata_keys[M.type] = icon_keys magazine_icondata_states[M.type] = ammo_states +/* + * Ammo Boxes + */ + +/obj/item/ammo_magazine/ammo_box + name = "ammo box" + desc = "A box that holds some kind of ammo." + icon = 'icons/obj/ammo_boxes.dmi' + icon_state = "pistol" + slot_flags = null //You can't fit a box on your belt + item_state = "paper" + matter = null + throwforce = 3 + throw_speed = 5 + throw_range = 12 + preserve_item = 1 + caliber = ".357" + drop_sound = 'sound/items/drop/matchbox.ogg' + pickup_sound = 'sound/items/pickup/matchbox.ogg' + +/obj/item/ammo_magazine/ammo_box/AltClick(mob/user) + if(can_remove_ammo) + if(isliving(user) && Adjacent(user)) + if(stored_ammo.len) + var/obj/item/ammo_casing/C = stored_ammo[stored_ammo.len] + stored_ammo-=C + user.put_in_hands(C) + user.visible_message("\The [user] removes \a [C] from [src].", "You remove \a [C] from [src].") + update_icon() + return + ..() + +/obj/item/ammo_magazine/ammo_box/examine(mob/user) + . = ..() + + . += to_chat(usr, "Alt-click to extract contents") \ No newline at end of file diff --git a/code/modules/projectiles/ammunition/ammo_boxes.dm b/code/modules/projectiles/ammunition/ammo_boxes.dm new file mode 100644 index 0000000000..332b634a0f --- /dev/null +++ b/code/modules/projectiles/ammunition/ammo_boxes.dm @@ -0,0 +1,58 @@ +/************************************************************************/ +/* +# An explaination of the naming format for guns and ammo: +# +# a = Ammo, as in individual rounds of ammunition. +# b = Box, intended to have ammo taken out one at a time by hand. +# c = Clips, intended to reload magazines or guns quickly. +# m = Magazine, intended to hold rounds of ammo. +# s = Speedloaders, intended to reload guns quickly. +# +# Use this format, followed by the caliber. For example, a shotgun's caliber +# variable is "12g" as a result. Ergo, a shotgun round's path would have "a12g", +# or a magazine with shotgun shells would be "m12g" instead. To avoid confusion +# for developers and in-game admins spawning these items, stick to this format. +# Likewise, when creating new rounds, the caliber variable should match whatever +# the name says. +# +# This comment is copied in rounds.dm and magazines.dm as well. +# +# Also, to remove bullets from ammo boxes, use Alt-Click on the box. +*/ +/************************************************************************/ + +/* + * Foam + */ + +/obj/item/ammo_magazine/ammo_box/foam + name = "\improper Donk-Soft ammo box" + desc = "Contains Donk-Soft foam darts. It's Donk or Don't! Ages 8 and up." + icon = 'icons/obj/gun_toy.dmi' + icon_state = "foambox" + caliber = "foam" + ammo_type = /obj/item/ammo_casing/afoam_dart + matter = list(MAT_PLASTIC = 1800) + max_ammo = 30 + multiple_sprites = null + +/obj/item/ammo_magazine/ammo_box/foam/riot + name = "\improper Donk-Soft riot ammo box" + desc = "Contains Donk-Soft riot darts. It's Donk or Don't! Ages 18 and up." + icon_state = "foambox_riot" + matter = list(MAT_STEEL = 5040, MAT_PLASTIC = 1800) + +/* + * Cap + */ + +/obj/item/ammo_magazine/ammo_box/cap + name = "\improper AlliCo SNAP! Caps" + desc = "A box of spare caps for capguns. Ages 8 and up." + icon = 'icons/obj/gun_toy.dmi' + icon_state = "capbox" + caliber = "caps" + ammo_type = /obj/item/ammo_casing/cap + matter = list(MAT_STEEL = 2040) + max_ammo = 24 + multiple_sprites = null \ No newline at end of file diff --git a/code/modules/projectiles/ammunition/magazines.dm b/code/modules/projectiles/ammunition/magazines.dm index 41b000d82f..aa43a54792 100644 --- a/code/modules/projectiles/ammunition/magazines.dm +++ b/code/modules/projectiles/ammunition/magazines.dm @@ -22,7 +22,42 @@ */ /************************************************************************/ +///////// Foam ///////// +/obj/item/ammo_magazine/mfoam_dart/pistol + name = "\improper Donk-Soft pistol magazine" + icon = 'icons/obj/gun_toy.dmi' + icon_state = "toy" + mag_type = MAGAZINE + ammo_type = /obj/item/ammo_casing/afoam_dart + matter = list(MAT_PLASTIC = 250) + caliber = "foam" + max_ammo = 9 + multiple_sprites = 1 + +/obj/item/ammo_magazine/mfoam_dart/pistol/riot + ammo_type = /obj/item/ammo_casing/afoam_dart/riot + +/obj/item/ammo_magazine/mfoam_dart/pistol/empty + initial_ammo = 0 + +/obj/item/ammo_magazine/mfoam_dart/smg + name = "\improper Donk-Soft smg magazine" + icon = 'icons/obj/gun_toy.dmi' + icon_state = "toysmg" + mag_type = MAGAZINE + ammo_type = /obj/item/ammo_casing/afoam_dart + matter = list(MAT_PLASTIC = 250) + caliber = "foam" + max_ammo = 20 + multiple_sprites = 1 + +/obj/item/ammo_magazine/mfoam_dart/smg/riot + ammo_type = /obj/item/ammo_casing/afoam_dart/riot + matter = list(MAT_PLASTIC = 1260, MAT_PLASTIC = 250) + +/obj/item/ammo_magazine/mfoam_dart/smg/empty + initial_ammo = 0 ///////// .357 ///////// diff --git a/code/modules/projectiles/ammunition/rounds.dm b/code/modules/projectiles/ammunition/rounds.dm index c10cf8f7b3..0ea73396f8 100644 --- a/code/modules/projectiles/ammunition/rounds.dm +++ b/code/modules/projectiles/ammunition/rounds.dm @@ -19,6 +19,26 @@ */ /************************************************************************/ +/* + * Foam + */ + +/obj/item/ammo_casing/afoam_dart + name = "foam dart" + desc = "It's Donk or Don't! Ages 8 and up." + projectile_type = /obj/item/projectile/bullet/foam_dart + matter = list(MAT_PLASTIC = 60) + caliber = "foam" + icon = 'icons/obj/gun_toy.dmi' + icon_state = "foamdart" + caseless = 1 + +/obj/item/ammo_casing/afoam_dart/riot + name = "riot foam dart" + desc = "Whose smart idea was it to use toys as crowd control? Ages 18 and up." + matter = list(MAT_STEEL = 210, MAT_PLASTIC = 60) + icon_state = "foamdart_riot" + /* * .357 */ @@ -427,12 +447,13 @@ /obj/item/ammo_casing/cap name = "cap" - desc = "A cap for children toys." + desc = "A cap for children toys. Ages 8 and up." caliber = "caps" - icon_state = "r-casing" - color = "#FF0000" - projectile_type = /obj/item/projectile/bullet/pistol/cap + icon = 'icons/obj/gun_toy.dmi' + icon_state = "cap" + projectile_type = /obj/item/projectile/bullet/cap matter = list(MAT_STEEL = 85) + caseless = 1 /obj/item/ammo_casing/spent // For simple hostile mobs only, so they don't cough up usable bullets when firing. This is for literally nothing else. icon_state = "s-casing-spent" diff --git a/code/modules/projectiles/guns/energy/laser.dm b/code/modules/projectiles/guns/energy/laser.dm index e0f4b936b8..e4cd464663 100644 --- a/code/modules/projectiles/guns/energy/laser.dm +++ b/code/modules/projectiles/guns/energy/laser.dm @@ -278,41 +278,6 @@ accuracy = 0 scoped_accuracy = 20 -////////Laser Tag//////////////////// - -/obj/item/weapon/gun/energy/lasertag - name = "laser tag gun" - item_state = "laser" - desc = "Standard issue weapon of the Imperial Guard" - origin_tech = list(TECH_COMBAT = 1, TECH_MAGNET = 2) - matter = list(MAT_STEEL = 2000) - projectile_type = /obj/item/projectile/beam/lasertag/blue - cell_type = /obj/item/weapon/cell/device/weapon/recharge - battery_lock = 1 - var/required_vest - -/obj/item/weapon/gun/energy/lasertag/special_check(var/mob/living/carbon/human/M) - if(ishuman(M)) - if(!istype(M.wear_suit, required_vest)) - to_chat(M, "You need to be wearing your laser tag vest!") - return 0 - return ..() - -/obj/item/weapon/gun/energy/lasertag/blue - icon_state = "bluetag" - item_state = "bluetag" - projectile_type = /obj/item/projectile/beam/lasertag/blue - required_vest = /obj/item/clothing/suit/bluetag - -/obj/item/weapon/gun/energy/lasertag/red - icon_state = "redtag" - item_state = "redtag" - projectile_type = /obj/item/projectile/beam/lasertag/red - required_vest = /obj/item/clothing/suit/redtag - -/obj/item/weapon/gun/energy/lasertag/omni - projectile_type = /obj/item/projectile/beam/lasertag/omni - // Laser scattergun, proof of concept. /obj/item/weapon/gun/energy/lasershotgun diff --git a/code/modules/projectiles/guns/projectile/revolver.dm b/code/modules/projectiles/guns/projectile/revolver.dm index 5d158e5d0a..678146eb18 100644 --- a/code/modules/projectiles/guns/projectile/revolver.dm +++ b/code/modules/projectiles/guns/projectile/revolver.dm @@ -148,18 +148,6 @@ flick("deckard-reload",src) ..() -/obj/item/weapon/gun/projectile/revolver/capgun - name = "cap gun" - desc = "Looks almost like the real thing! Ages 8 and up." - icon_state = "revolver" - item_state = "revolver" - caliber = "caps" - origin_tech = list(TECH_COMBAT = 1, TECH_MATERIAL = 1) - handle_casings = CYCLE_CASINGS - max_shells = 7 - ammo_type = /obj/item/ammo_casing/cap - projectile_type = /obj/item/projectile/bullet/pistol/strong - /obj/item/weapon/gun/projectile/revolver/judge name = "\"The Judge\"" desc = "A revolving hand-shotgun by Jindal Arms that packs the power of a 12 guage in the palm of your hand (if you don't break your wrist). Uses 12g rounds." diff --git a/code/modules/projectiles/guns/toy.dm b/code/modules/projectiles/guns/toy.dm new file mode 100644 index 0000000000..e3b90bd1be --- /dev/null +++ b/code/modules/projectiles/guns/toy.dm @@ -0,0 +1,251 @@ +/* Toys Guns! + * + * Contains: + * Cap Gun + * Shotgun + * Pistol + * N99 Pistol + * Levergun + * Revolver + * Big Iron + * Crossbow + * Crossbow (Halloween) + * Sawn Off + * SMG + * Laser Tag + */ + +/* + * Cap Gun + */ +/obj/item/weapon/gun/projectile/revolver/capgun + name = "cap gun" + desc = "Looks almost like the real thing! Ages 8 and up." + icon = 'icons/obj/gun_toy.dmi' + icon_state = "cap_gun" + item_state = "revolver" + caliber = "caps" + origin_tech = list(TECH_COMBAT = 1, TECH_MATERIAL = 1) + ammo_type = /obj/item/ammo_casing/cap + projectile_type = /obj/item/projectile/bullet/cap + matter = list(MAT_STEEL = 1000) + handle_casings = null + recoil = 1 //it's a toy + +/* + * Shotgun + */ +/obj/item/weapon/gun/projectile/shotgun/pump/toy + name = "\improper Donk-Soft shotgun" + desc = "Donk-Soft foam shotgun! It's Donk or Don't! Ages 8 and up." + icon = 'icons/obj/gun_toy.dmi' + icon_state = "shotgun" + item_state = "shotgun" + max_shells = 6 + w_class = ITEMSIZE_LARGE + force = 2 + slot_flags = null + caliber = "foam" + origin_tech = list(TECH_COMBAT = 1, TECH_MATERIAL = 1) + load_method = SINGLE_CASING + ammo_type = /obj/item/ammo_casing/afoam_dart + projectile_type = /obj/item/projectile/bullet/foam_dart + matter = list(MAT_PLASTIC = 2000) + handle_casings = null + recoil = null //it's a toy + +/* + * Pistol + */ +/obj/item/weapon/gun/projectile/pistol/toy + name = "\improper Donk-Soft pistol" + desc = "Donk-Soft foam pistol! It's Donk or Don't! Ages 8 and up." + icon = 'icons/obj/gun_toy.dmi' + icon_state = "pistol" + item_state = "gun" + magazine_type = /obj/item/ammo_magazine/mfoam_dart/pistol + allowed_magazines = list(/obj/item/ammo_magazine/mfoam_dart/pistol) + projectile_type = /obj/item/projectile/bullet/foam_dart + caliber = "foam" + origin_tech = list(TECH_COMBAT = 1, TECH_MATERIAL = 1) + load_method = MAGAZINE + matter = list(MAT_PLASTIC = 1000) + recoil = null //it's a toy + +/obj/item/weapon/gun/projectile/pistol/toy/update_icon() + if(ammo_magazine) + icon_state = initial(icon_state) + else + icon_state = "[initial(icon_state)]-e" + +/* + * N99 Pistol + */ +/obj/item/weapon/gun/projectile/pistol/toy/n99 + name = "\improper Donk-Soft commemorative pistol" + desc = "A special made Donk-Soft pistol to promote 'Radius: Legend of the Demon Core', a popular post-apocolyptic TV series." + icon_state = "n99" + item_state = "gun" + +/obj/item/weapon/gun/projectile/pistol/toy/n99/update_icon() + if(ammo_magazine) + icon_state = initial(icon_state) + else + icon_state = "[initial(icon_state)]-e" + +/* + * Levergun + */ +/obj/item/weapon/gun/projectile/shotgun/pump/toy/levergun + name = "\improper Donk-Soft levergun" + desc = "Donk-Soft foam levergun! Time to cowboy up! Ages 8 and up." + icon_state = "leveraction" + item_state = "leveraction" + max_shells = 5 + pump_animation = "leveraction-cycling" + +/* + * Revolver + */ +/obj/item/weapon/gun/projectile/revolver/toy + name = "\improper Donk-Soft revolver" + desc = "Donk-Soft foam revolver! Time to cowboy up! Ages 8 and up." + icon = 'icons/obj/gun_toy.dmi' + icon_state = "revolver" + item_state = "revolver" + caliber = "foam" + ammo_type = /obj/item/ammo_casing/afoam_dart + projectile_type = /obj/item/projectile/bullet/foam_dart + origin_tech = list(TECH_COMBAT = 1, TECH_MATERIAL = 1) + load_method = SINGLE_CASING + max_shells = 6 + matter = list(MAT_PLASTIC = 1000) + handle_casings = null + recoil = null //it's a toy + +/* + * Big Iron + */ +/obj/item/weapon/gun/projectile/revolver/toy/big_iron + name = "\improper Donk-Soft big iron" + desc = "A special made Donk-Soft pistol to promote 'A Fistful of Phoron', a popular frontier novel series." + icon_state = "big_iron" + item_state = "revolver" + +/* + * Crossbow + */ +/obj/item/weapon/gun/projectile/revolver/toy/crossbow + name = "\improper Donk-Soft crossbow" + desc = "Donk-Soft foam crossbow! It's Donk or Don't! Ages 8 and up." + icon = 'icons/obj/gun_toy.dmi' + icon_state = "foamcrossbow" + item_state = "foamcrossbow" + max_shells = 5 + +/* + * Crossbow (Halloween) + */ +/obj/item/weapon/gun/projectile/revolver/toy/crossbow/halloween + name = "\improper Donk-Soft special edition crossbow" + desc = "A special edition Donk-Soft crossbow! Made special for your Halloween cosplay. It's Donk or Don't! Ages 8 and up." + icon = 'icons/obj/gun_toy.dmi' + icon_state = "foamcrossbow_halloween" + item_state = "foamcrossbow_halloween" + max_shells = 5 + +/* + * Sawn Off + */ +/obj/item/weapon/gun/projectile/revolver/toy/sawnoff //revolver code just because it's easier + name = "\improper Donk-Soft sawn off shotgun" + desc = "Donk-Soft foam sawn off! It's Donk or Don't! Ages 8 and up." + icon = 'icons/obj/gun_toy.dmi' + icon_state = "sawnshotgun" + item_state = "dshotgun" + max_shells = 2 + w_class = ITEMSIZE_NORMAL + matter = list(MAT_PLASTIC = 1500) + +/* + * SMG + */ +/obj/item/weapon/gun/projectile/automatic/toy + name = "\improper Donk-Soft SMG" + desc = "Donk-Soft foam SMG! It's Donk or Don't! Ages 8 and up." + icon = 'icons/obj/gun_toy.dmi' + icon_state = "smg" + caliber = "foam" + w_class = ITEMSIZE_NORMAL + load_method = MAGAZINE + origin_tech = list(TECH_COMBAT = 1, TECH_MATERIAL = 1) + slot_flags = SLOT_BELT + magazine_type = /obj/item/ammo_magazine/mfoam_dart/smg + allowed_magazines = list(/obj/item/ammo_magazine/mfoam_dart/smg) + projectile_type = /obj/item/projectile/bullet/foam_dart + matter = list(MAT_PLASTIC = 1500) + recoil = null //it's a toy + + 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=2, burst_accuracy=list(0,-2,-2), dispersion=null) + ) + +/obj/item/weapon/gun/projectile/automatic/toy/riot + magazine_type = /obj/item/ammo_magazine/mfoam_dart/smg/riot + +/obj/item/weapon/gun/projectile/automatic/toy/update_icon() + if(ammo_magazine) + icon_state = initial(icon_state) + else + icon_state = "[initial(icon_state)]-e" + +/* + * Laser Tag + */ +/obj/item/weapon/gun/energy/lasertag + name = "laser tag gun" + desc = "Standard issue weapon of the Imperial Guard" + icon = 'icons/obj/gun_toy.dmi' + item_state = "omnitag" + item_state = "retro" + origin_tech = list(TECH_COMBAT = 1, TECH_MAGNET = 2) + matter = list(MAT_STEEL = 2000) + projectile_type = /obj/item/projectile/beam/lasertag/blue + cell_type = /obj/item/weapon/cell/device/weapon/recharge + battery_lock = 1 + var/required_vest + +/obj/item/weapon/gun/energy/lasertag/special_check(var/mob/living/carbon/human/M) + if(ishuman(M)) + if(!istype(M.wear_suit, required_vest)) + to_chat(M, "You need to be wearing your laser tag vest!") + return 0 + return ..() + +/obj/item/weapon/gun/energy/lasertag/blue + icon_state = "bluetag" + item_state = "bluetag" + projectile_type = /obj/item/projectile/beam/lasertag/blue + required_vest = /obj/item/clothing/suit/bluetag + +/obj/item/weapon/gun/energy/lasertag/blue/sub + name = "Brigader Sidearm" + desc = "A laser tag replica of the standard issue weapon for the Spacer Union Brigade from the hit series Spacer Trail (Blue Team)." + icon_state = "bluetwo" + item_state = "retro" + +/obj/item/weapon/gun/energy/lasertag/red + icon_state = "redtag" + item_state = "redtag" + projectile_type = /obj/item/projectile/beam/lasertag/red + required_vest = /obj/item/clothing/suit/redtag + +/obj/item/weapon/gun/energy/lasertag/red/dom + name = "Mu'tu'bi sidearm" + desc = "A laser tag replica of the Mu'tu'bi sidearm from the hit series Spacer Trail (Red Team)." + icon_state = "redtwo" + item_state = "retro" + +/obj/item/weapon/gun/energy/lasertag/omni + projectile_type = /obj/item/projectile/beam/lasertag/omni \ No newline at end of file diff --git a/code/modules/projectiles/projectile/bullets.dm b/code/modules/projectiles/projectile/bullets.dm index 641c8727ab..8878d3a4f7 100644 --- a/code/modules/projectiles/projectile/bullets.dm +++ b/code/modules/projectiles/projectile/bullets.dm @@ -323,10 +323,6 @@ embed_chance = 0 sharp = FALSE -/obj/item/projectile/bullet/blank/cap/process() - loc = null - qdel(src) - /* BB Rounds */ /obj/item/projectile/bullet/bb // Generic single BB name = "BB" @@ -334,7 +330,7 @@ agony = 0 embed_chance = 0 sharp = FALSE - silenced = TRUE + silenced = TRUE /obj/item/projectile/bullet/pellet/shotgun/bb // Shotgun name = "BB" @@ -345,4 +341,54 @@ pellets = 6 range_step = 1 spread_step = 10 - silenced = TRUE \ No newline at end of file + silenced = TRUE + +/* toy projectiles */ +/obj/item/projectile/bullet/cap + name = "cap" + desc = "SNAP!" + damage = 0 // It's a damn toy. + embed_chance = 0 + nodamage = TRUE + sharp = FALSE + damage_type = HALLOSS + impact_effect_type = null + fire_sound = 'sound/effects/snap.ogg' + combustion = FALSE + +/obj/item/projectile/bullet/cap/process() + loc = null + qdel(src) + +/obj/item/projectile/bullet/foam_dart + name = "foam dart" + desc = "I hope you're wearing eye protection." + damage = 0 // It's a damn toy. + embed_chance = 0 + nodamage = TRUE + sharp = FALSE + damage_type = HALLOSS + impact_effect_type = null + fire_sound = 'sound/items/syringeproj.ogg' + combustion = FALSE + icon = 'icons/obj/gun_toy.dmi' + icon_state = "foamdart_proj" + range = 15 + +/obj/item/projectile/bullet/foam_dart/on_impact(var/atom/A) + . = ..() + var/turf/T = get_turf(loc) + if(istype(T)) + new /obj/item/ammo_casing/afoam_dart(get_turf(loc)) + +/obj/item/projectile/bullet/foam_dart/on_range(var/atom/A) + . = ..() + var/turf/T = get_turf(loc) + if(istype(T)) + new /obj/item/ammo_casing/afoam_dart(get_turf(loc)) + +/obj/item/projectile/bullet/foam_dart/riot + name = "riot foam dart" + desc = "Whose smart idea was it to use toys as crowd control? Ages 18 and up." + agony = 50 + icon_state = "foamdart_riot_proj" \ No newline at end of file diff --git a/code/modules/reagents/machinery/dispenser/reagent_tank.dm b/code/modules/reagents/machinery/dispenser/reagent_tank.dm index 097ee924e9..2ba27cfe39 100644 --- a/code/modules/reagents/machinery/dispenser/reagent_tank.dm +++ b/code/modules/reagents/machinery/dispenser/reagent_tank.dm @@ -155,6 +155,20 @@ icon_state = "barrel" modded = TRUE +/obj/structure/reagent_dispensers/fueltank/barrel/two + name = "explosive barrel" + desc = "A barrel with warning labels painted all over it." + icon = 'icons/obj/objects_vr.dmi' + icon_state = "barrel2" + modded = FALSE + +/obj/structure/reagent_dispensers/fueltank/barrel/three + name = "fuel barrel" + desc = "An open-topped barrel full of nasty-looking liquid." + icon = 'icons/obj/objects_vr.dmi' + icon_state = "barrel3" + modded = FALSE + /obj/structure/reagent_dispensers/fueltank/barrel/attackby(obj/item/weapon/W as obj, mob/user as mob) if (W.is_wrench()) //can't wrench it shut, it's always open return diff --git a/code/modules/reagents/reagent_containers/pill_vr.dm b/code/modules/reagents/reagent_containers/pill_vr.dm index ab6502bfd4..8eaa27c953 100644 --- a/code/modules/reagents/reagent_containers/pill_vr.dm +++ b/code/modules/reagents/reagent_containers/pill_vr.dm @@ -146,3 +146,13 @@ . = ..() reagents.add_reagent("sleevingcure", 1) color = reagents.get_color() + +/obj/item/weapon/reagent_containers/pill/airlock + name = "\'Airlock\' Pill" + desc = "Neutralizes toxins and provides a mild analgesic effect." + icon_state = "pill2" + +/obj/item/weapon/reagent_containers/pill/airlock/New() + ..() + reagents.add_reagent("anti_toxin", 15) + reagents.add_reagent("paracetamol", 5) \ No newline at end of file diff --git a/code/modules/vore/eating/belly_obj_vr.dm b/code/modules/vore/eating/belly_obj_vr.dm index f96af5c204..10d1dd44f3 100644 --- a/code/modules/vore/eating/belly_obj_vr.dm +++ b/code/modules/vore/eating/belly_obj_vr.dm @@ -354,6 +354,10 @@ if (!(M in contents)) return 0 // They weren't in this belly anyway + if(istype(M, /mob/living/simple_mob/vore/hostile/morph/dominated_prey)) + var/mob/living/simple_mob/vore/hostile/morph/dominated_prey/p = M + p.undo_prey_takeover(FALSE) + return 0 for(var/mob/living/L in M.contents) L.muffled = 0 for(var/obj/item/weapon/holder/H in M.contents) diff --git a/code/modules/vore/eating/living_vr.dm b/code/modules/vore/eating/living_vr.dm index ffaaa5ec09..7a9cab7a2b 100644 --- a/code/modules/vore/eating/living_vr.dm +++ b/code/modules/vore/eating/living_vr.dm @@ -405,6 +405,11 @@ //You're in a belly! if(isbelly(loc)) + //You've been taken over by a morph + if(istype(src, /mob/living/simple_mob/vore/hostile/morph/dominated_prey)) + var/mob/living/simple_mob/vore/hostile/morph/dominated_prey/s = src + s.undo_prey_takeover(TRUE) + return var/obj/belly/B = loc var/confirm = tgui_alert(src, "You're in a mob. Don't use this as a trick to get out of hostile animals. This is for escaping from preference-breaking and if you're otherwise unable to escape from endo (pred AFK for a long time).", "Confirmation", list("Okay", "Cancel")) if(confirm != "Okay" || loc != B) @@ -445,7 +450,6 @@ crystal.bound_mob = null crystal.bound_mob = capture_crystal = 0 log_and_message_admins("[key_name(src)] used the OOC escape button to get out of [crystal] owned by [crystal.owner]. [ADMIN_FLW(src)]") - //Don't appear to be in a vore situation else to_chat(src,"You aren't inside anyone, though, is the thing.") diff --git a/code/modules/vore/fluffstuff/custom_clothes_vr.dm b/code/modules/vore/fluffstuff/custom_clothes_vr.dm index 5bb399b0d0..db232eead8 100644 --- a/code/modules/vore/fluffstuff/custom_clothes_vr.dm +++ b/code/modules/vore/fluffstuff/custom_clothes_vr.dm @@ -625,6 +625,40 @@ else return 1 +//scree:Avida +/obj/item/clothing/under/skirt/outfit/fluff/avida + name = "purple dress" + desc = "A clingy purple dress with red lacework, with a hole at the back for a tail." + icon = 'icons/vore/custom_clothes_vr.dmi' + icon_state = "avidadress" + item_state = "avidadress" + item_icons = list( + slot_l_hand_str = 'icons/vore/custom_clothes_left_hand_vr.dmi', + slot_r_hand_str = 'icons/vore/custom_clothes_right_hand_vr.dmi', + slot_w_uniform_str = 'icons/vore/custom_onmob_vr.dmi' + ) + +//scree:Avida +/obj/item/clothing/head/fluff/avida + name = "purple witch hat" + desc = "A pointy purple hat with a wide brim, with a red hatband. It appears to have ear-holes in it." + icon = 'icons/vore/custom_clothes_vr.dmi' + icon_state = "avidahat" + item_state = "avidahat" + item_icons = list( + slot_l_hand_str = 'icons/vore/custom_clothes_left_hand_vr.dmi', + slot_r_hand_str = 'icons/vore/custom_clothes_right_hand_vr.dmi', + slot_head_str = 'icons/vore/custom_onmob_32x48_vr.dmi' + ) + +/obj/item/clothing/head/fluff/avida/mob_can_equip(var/mob/living/carbon/human/H, slot, disable_warning = 0) + if(..()) + if(H.ear_style.name == "Bnnuy Ears"||H.ear_style.name == "Bnnuy Ears 2") //check if wearer's ear sprite is compatible with trimmed icon + item_state = initial(src.item_state) + else //if not, just use a generic icon + item_state = "avidahatnoears" + return TRUE + //natje:Pumila /obj/item/clothing/under/fluff/aluranevines name = "Pumila's vines" @@ -645,27 +679,6 @@ else return 1 -/obj/item/clothing/under/fluff/screesuit - name = "Scree's feathers" - desc = "A mop of fluffy blue feathers, the honkmother only knows what kind of bird they originally came from." - - icon = 'icons/vore/custom_clothes_vr.dmi' - icon_state = "screesuit" - - icon_override = 'icons/vore/custom_clothes_vr.dmi' - item_state = "screesuit_mob" - -/obj/item/clothing/under/fluff/screesuit/mob_can_equip(var/mob/living/carbon/human/H, slot, disable_warning = 0) - if(..()) - if(H.ckey != "scree") - to_chat(H, "Are you just going to tape them on or what? This isn't gonna work.") - return 0 - else - return 1 - -/obj/item/clothing/under/fluff/screesuit/digest_act(var/atom/movable/item_storage = null) - return FALSE - //HOS Hardsuit /obj/item/clothing/suit/space/void/security/fluff/hos // ToDo: Rig version. name = "\improper prototype voidsuit" @@ -2418,4 +2431,12 @@ Departamental Swimsuits, for general use item_state = "evelyncoat_mob_t" H.update_inv_wear_suit() else - RemoveHood_evelyn() \ No newline at end of file + RemoveHood_evelyn() + +//Uncle_Fruit_VEVO - Bradley Khatibi +/obj/item/clothing/shoes/fluff/airjordans + name = "A pair of Air Jordan 1 Mid 'Black Gym Red's" + desc = "Appearing in a classic Jordan Brand colorway, the Air Jordan 1 Mid 'Black Gym Red' released in May 2021. Built with leather, the shoe's upper sports a white base, contrasted by black on the overlays and highlighted by Gym Red on the padded collar, 'Wings' logo and Swoosh branding. A breathable nylon tongue and perforated toe box support the fit, while underfoot, a standard rubber cupsole with Air in the heel anchors the build." + icon_state = "airjordans" + icon = 'icons/vore/custom_clothes_vr.dmi' + icon_override = 'icons/vore/custom_onmob_vr.dmi' \ 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 f9e1d88c12..4c2c38c9b5 100644 --- a/code/modules/vore/fluffstuff/custom_items_vr.dm +++ b/code/modules/vore/fluffstuff/custom_items_vr.dm @@ -1435,4 +1435,14 @@ from_suit = /obj/item/clothing/suit/storage/hooded/explorer to_suit = /obj/item/clothing/suit/storage/hooded/explorer/lucky - +//RevolverEloise - Revolver Eloise +/obj/item/weapon/sword/fluff/revolver + name = "Catnip" + desc = "A steel claymore with what appears to be a teppi engraved into the hilt and a finely forged metal cuboid for a pommel. The blade is honed and balanced to an unusually high degree and has clearly been meticulously cared for." + icon = 'icons/vore/custom_items_vr.dmi' + icon_state = "revclaymore" + icon_override = 'icons/vore/custom_items_vr.dmi' + item_state = "revclaymoremob" + force = 1 + sharp = TRUE + edge = TRUE \ No newline at end of file diff --git a/code/modules/vore/resizing/sizegun_vr.dm b/code/modules/vore/resizing/sizegun_vr.dm index 9d2b73d7cb..20db6e308e 100644 --- a/code/modules/vore/resizing/sizegun_vr.dm +++ b/code/modules/vore/resizing/sizegun_vr.dm @@ -7,7 +7,7 @@ desc = "A highly advanced ray gun with a knob on the side to adjust the size you desire. Warning: Do not insert into mouth." icon = 'icons/obj/gun_vr.dmi' icon_override = 'icons/obj/gun_vr.dmi' - icon_state = "sizegun100" + icon_state = "sizegun" item_state = "sizegun" fire_sound = 'sound/weapons/wave.ogg' charge_cost = 240 @@ -52,13 +52,38 @@ if(size_set_to < RESIZE_MINIMUM || size_set_to > RESIZE_MAXIMUM) to_chat(usr, "Note: Resizing limited to 25-200% automatically while outside dormatory areas.") //hint that we clamp it in resize +/obj/item/weapon/gun/energy/sizegun/update_icon(var/ignore_inhands) + var/grow_mode = "shrink" + if(size_set_to > 1) + grow_mode = "grow" + if(charge_meter) + var/ratio = power_supply.charge / power_supply.maxcharge + + //make sure that rounding down will not give us the empty state even if we have charge for a shot left. + if(power_supply.charge < charge_cost) + ratio = 0 + else + ratio = max(round(ratio, 0.25) * 100, 25) + + icon_state = "[initial(icon_state)]-[grow_mode][ratio]" + item_state = "[initial(icon_state)]-[grow_mode]" + + if(!ignore_inhands) update_held_icon() + /obj/item/weapon/gun/energy/sizegun/examine(mob/user) . = ..() . += "It is currently set at [size_set_to*100]%" +/obj/item/weapon/gun/energy/sizegun/old + desc = "A highly advanced ray gun with a knob on the side to adjust the size you desire. This one seems to be an older model, but still functional. Warning: Do not insert into mouth." + icon_state = "sizegun-old" + item_state = "sizegun-old" + /obj/item/weapon/gun/energy/sizegun/admin name = "modified size gun" - desc = "Sizegun, without limits on minimum/maximum size, and with unlimited charge. Time to show 'em that size does matter." + desc = "An older model sizegun, modified to be without limits on minimum/maximum size, and have an unlimited charge. Time to show 'em that size does matter." + icon_state = "sizegun_admin" + item_state = "sizegun_admin" charge_cost = 0 projectile_type = /obj/item/projectile/beam/sizelaser/admin diff --git a/icons/_nanomaps/tether_nanomap_z1.png b/icons/_nanomaps/tether_nanomap_z1.png index fa1d0d6148..1ad2755b7c 100644 Binary files a/icons/_nanomaps/tether_nanomap_z1.png and b/icons/_nanomaps/tether_nanomap_z1.png differ diff --git a/icons/_nanomaps/tether_nanomap_z2.png b/icons/_nanomaps/tether_nanomap_z2.png index b15ae23be0..d30a99906b 100644 Binary files a/icons/_nanomaps/tether_nanomap_z2.png and b/icons/_nanomaps/tether_nanomap_z2.png differ diff --git a/icons/_nanomaps/tether_nanomap_z3.png b/icons/_nanomaps/tether_nanomap_z3.png index af24bb981d..3c55412116 100644 Binary files a/icons/_nanomaps/tether_nanomap_z3.png and b/icons/_nanomaps/tether_nanomap_z3.png differ diff --git a/icons/_nanomaps/tether_nanomap_z4.png b/icons/_nanomaps/tether_nanomap_z4.png index 510d22b3d6..c2623219ee 100644 Binary files a/icons/_nanomaps/tether_nanomap_z4.png and b/icons/_nanomaps/tether_nanomap_z4.png differ diff --git a/icons/inventory/belt/item.dmi b/icons/inventory/belt/item.dmi index 8c32c4552b..bde59b458b 100644 Binary files a/icons/inventory/belt/item.dmi and b/icons/inventory/belt/item.dmi differ diff --git a/icons/inventory/belt/mob.dmi b/icons/inventory/belt/mob.dmi index 25de974858..a8e2aaacd7 100644 Binary files a/icons/inventory/belt/mob.dmi and b/icons/inventory/belt/mob.dmi differ diff --git a/icons/inventory/eyes/item.dmi b/icons/inventory/eyes/item.dmi index bcd48ade6b..a465f414c3 100644 Binary files a/icons/inventory/eyes/item.dmi and b/icons/inventory/eyes/item.dmi differ diff --git a/icons/inventory/eyes/mob.dmi b/icons/inventory/eyes/mob.dmi index 1d4e1fe2ca..f2fdd8a45f 100644 Binary files a/icons/inventory/eyes/mob.dmi and b/icons/inventory/eyes/mob.dmi differ diff --git a/icons/inventory/hands/item_vr.dmi b/icons/inventory/hands/item_vr.dmi index 749d4df189..302f4be618 100644 Binary files a/icons/inventory/hands/item_vr.dmi and b/icons/inventory/hands/item_vr.dmi differ diff --git a/icons/inventory/hands/mob_vr.dmi b/icons/inventory/hands/mob_vr.dmi index 3a8806e48c..8aed1c166d 100644 Binary files a/icons/inventory/hands/mob_vr.dmi and b/icons/inventory/hands/mob_vr.dmi differ diff --git a/icons/inventory/hands/mob_vr_teshari.dmi b/icons/inventory/hands/mob_vr_teshari.dmi new file mode 100644 index 0000000000..2d79a8ac14 Binary files /dev/null and b/icons/inventory/hands/mob_vr_teshari.dmi differ diff --git a/icons/inventory/hands/mob_vr_vox.dmi b/icons/inventory/hands/mob_vr_vox.dmi new file mode 100644 index 0000000000..405ce4b76f Binary files /dev/null and b/icons/inventory/hands/mob_vr_vox.dmi differ diff --git a/icons/inventory/hands/mob_vr_werebeast.dmi b/icons/inventory/hands/mob_vr_werebeast.dmi index 7b14f5bf96..f117406623 100644 Binary files a/icons/inventory/hands/mob_vr_werebeast.dmi and b/icons/inventory/hands/mob_vr_werebeast.dmi differ diff --git a/icons/inventory/head/item.dmi b/icons/inventory/head/item.dmi index bfdea47a73..76b8118409 100644 Binary files a/icons/inventory/head/item.dmi and b/icons/inventory/head/item.dmi differ diff --git a/icons/inventory/head/mob.dmi b/icons/inventory/head/mob.dmi index 17728e25f6..0917a414bd 100644 Binary files a/icons/inventory/head/mob.dmi and b/icons/inventory/head/mob.dmi differ diff --git a/icons/inventory/suit/item.dmi b/icons/inventory/suit/item.dmi index 4e8e3f8657..e5d75cd19e 100644 Binary files a/icons/inventory/suit/item.dmi and b/icons/inventory/suit/item.dmi differ diff --git a/icons/inventory/suit/mob.dmi b/icons/inventory/suit/mob.dmi index 9aa489853f..0eb7b2b6e1 100644 Binary files a/icons/inventory/suit/mob.dmi and b/icons/inventory/suit/mob.dmi differ diff --git a/icons/mob/animal_vr.dmi b/icons/mob/animal_vr.dmi index 12b65c71c8..5d29e60511 100644 Binary files a/icons/mob/animal_vr.dmi and b/icons/mob/animal_vr.dmi differ diff --git a/icons/mob/human_races/sprite_accessories/tails.dmi b/icons/mob/human_races/sprite_accessories/tails.dmi index 5e4a27597f..960a44d5e2 100644 Binary files a/icons/mob/human_races/sprite_accessories/tails.dmi and b/icons/mob/human_races/sprite_accessories/tails.dmi differ diff --git a/icons/mob/vore/ears_32x64.dmi b/icons/mob/vore/ears_32x64.dmi index 4fd59c7e69..a661c9e3c7 100644 Binary files a/icons/mob/vore/ears_32x64.dmi and b/icons/mob/vore/ears_32x64.dmi differ diff --git a/icons/mob/vore/tails_vr.dmi b/icons/mob/vore/tails_vr.dmi index 9d1c37b8da..d5a4d7ad57 100644 Binary files a/icons/mob/vore/tails_vr.dmi and b/icons/mob/vore/tails_vr.dmi differ diff --git a/icons/obj/ammo_boxes.dmi b/icons/obj/ammo_boxes.dmi new file mode 100644 index 0000000000..3706970041 Binary files /dev/null and b/icons/obj/ammo_boxes.dmi differ diff --git a/icons/obj/gun.dmi b/icons/obj/gun.dmi index c94a289290..9de92931db 100644 Binary files a/icons/obj/gun.dmi and b/icons/obj/gun.dmi differ diff --git a/icons/obj/gun_toy.dmi b/icons/obj/gun_toy.dmi new file mode 100644 index 0000000000..bee6bcc49d Binary files /dev/null and b/icons/obj/gun_toy.dmi differ diff --git a/icons/obj/gun_vr.dmi b/icons/obj/gun_vr.dmi index a623c02134..7f44ea9802 100644 Binary files a/icons/obj/gun_vr.dmi and b/icons/obj/gun_vr.dmi differ diff --git a/icons/obj/objects_vr.dmi b/icons/obj/objects_vr.dmi index 96d3738355..0cfacc4fd0 100644 Binary files a/icons/obj/objects_vr.dmi and b/icons/obj/objects_vr.dmi differ diff --git a/icons/obj/playing_cards.dmi b/icons/obj/playing_cards.dmi index 04e7af96fe..0195f8e6f4 100644 Binary files a/icons/obj/playing_cards.dmi and b/icons/obj/playing_cards.dmi differ diff --git a/icons/obj/refill_cartridges.dmi b/icons/obj/refill_cartridges.dmi new file mode 100644 index 0000000000..61818e977c Binary files /dev/null and b/icons/obj/refill_cartridges.dmi differ diff --git a/icons/obj/toy.dmi b/icons/obj/toy.dmi index b7235b7e58..98519ef659 100644 Binary files a/icons/obj/toy.dmi and b/icons/obj/toy.dmi differ diff --git a/icons/obj/toy_vr.dmi b/icons/obj/toy_vr.dmi index 3ad106945b..9b3ca4d9d0 100644 Binary files a/icons/obj/toy_vr.dmi and b/icons/obj/toy_vr.dmi differ diff --git a/icons/obj/vending.dmi b/icons/obj/vending.dmi index a1fbfc9479..91285fd3a1 100755 Binary files a/icons/obj/vending.dmi and b/icons/obj/vending.dmi differ diff --git a/icons/vore/custom_clothes_left_hand_vr.dmi b/icons/vore/custom_clothes_left_hand_vr.dmi index ec5dd4b55a..17ac4c3a7e 100644 Binary files a/icons/vore/custom_clothes_left_hand_vr.dmi and b/icons/vore/custom_clothes_left_hand_vr.dmi differ diff --git a/icons/vore/custom_clothes_right_hand_vr.dmi b/icons/vore/custom_clothes_right_hand_vr.dmi index 2fc3bdb14f..d77e0fa248 100644 Binary files a/icons/vore/custom_clothes_right_hand_vr.dmi and b/icons/vore/custom_clothes_right_hand_vr.dmi differ diff --git a/icons/vore/custom_clothes_vr.dmi b/icons/vore/custom_clothes_vr.dmi index 12d65818b1..cc7b242670 100644 Binary files a/icons/vore/custom_clothes_vr.dmi and b/icons/vore/custom_clothes_vr.dmi differ diff --git a/icons/vore/custom_items_vr.dmi b/icons/vore/custom_items_vr.dmi index b98f92406f..3c05eb5d57 100644 Binary files a/icons/vore/custom_items_vr.dmi and b/icons/vore/custom_items_vr.dmi differ diff --git a/icons/vore/custom_onmob_32x48_vr.dmi b/icons/vore/custom_onmob_32x48_vr.dmi index 2889db5cc0..827ab1fb47 100644 Binary files a/icons/vore/custom_onmob_32x48_vr.dmi and b/icons/vore/custom_onmob_32x48_vr.dmi differ diff --git a/icons/vore/custom_onmob_vr.dmi b/icons/vore/custom_onmob_vr.dmi index 03c26ba63d..e90afae8d4 100644 Binary files a/icons/vore/custom_onmob_vr.dmi and b/icons/vore/custom_onmob_vr.dmi differ diff --git a/maps/expedition_vr/beach/submaps/speakeasy_vr.dmm b/maps/expedition_vr/beach/submaps/speakeasy_vr.dmm index 0f8c789a93..a817bd965c 100644 --- a/maps/expedition_vr/beach/submaps/speakeasy_vr.dmm +++ b/maps/expedition_vr/beach/submaps/speakeasy_vr.dmm @@ -1,458 +1,458 @@ -//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE -"a" = ( -/turf/template_noop, -/area/submap/Speakeasy) -"c" = ( -/turf/simulated/floor/carpet/turcarpet, -/area/submap/Speakeasy) -"f" = ( -/obj/structure/table/gamblingtable, -/turf/simulated/floor/wood, -/area/submap/Speakeasy) -"g" = ( -/obj/structure/bed/chair/wood{ - dir = 1 - }, -/turf/simulated/floor/wood, -/area/submap/Speakeasy) -"h" = ( -/obj/random/handgun, -/turf/simulated/floor/wood, -/area/submap/Speakeasy) -"i" = ( -/obj/item/clothing/head/fedora, -/turf/simulated/floor/wood, -/area/submap/Speakeasy) -"j" = ( -/obj/structure/bookcase, -/turf/simulated/floor/wood, -/area/submap/Speakeasy) -"k" = ( -/obj/item/weapon/stool/padded, -/turf/simulated/floor/wood, -/area/submap/Speakeasy) -"l" = ( -/obj/structure/bed/chair/comfy/black, -/turf/simulated/floor/carpet/turcarpet, -/area/submap/Speakeasy) -"m" = ( -/obj/structure/table/woodentable, -/obj/machinery/light/poi{ - dir = 4 - }, -/turf/simulated/floor/wood, -/area/submap/Speakeasy) -"n" = ( -/obj/structure/reagent_dispensers/beerkeg, -/turf/simulated/floor/wood, -/area/submap/Speakeasy) -"o" = ( -/obj/structure/simple_door/wood, -/turf/simulated/floor/wood, -/area/submap/Speakeasy) -"p" = ( -/obj/machinery/media/jukebox, -/turf/simulated/floor/wood, -/area/submap/Speakeasy) -"s" = ( -/obj/structure/bed/chair/wood{ - dir = 4 - }, -/turf/simulated/floor/wood, -/area/submap/Speakeasy) -"u" = ( -/obj/structure/table/gamblingtable, -/obj/machinery/light/poi{ - dir = 4 - }, -/turf/simulated/floor/wood, -/area/submap/Speakeasy) -"v" = ( -/obj/structure/table/fancyblack, -/obj/item/clothing/mask/smokable/cigarette/cigar, -/turf/simulated/floor/carpet/turcarpet, -/area/submap/Speakeasy) -"w" = ( -/turf/simulated/wall/wood, -/area/submap/Speakeasy) -"x" = ( -/obj/structure/bed/chair/sofa/blue/left{ - dir = 4 - }, -/turf/simulated/floor/wood, -/area/submap/Speakeasy) -"B" = ( -/turf/simulated/floor/wood, -/area/submap/Speakeasy) -"C" = ( -/turf/simulated/mineral/floor/cave, -/area/submap/Speakeasy) -"D" = ( -/obj/structure/bed/chair/sofa/black/corner{ - dir = 4 - }, -/turf/simulated/floor/wood, -/area/submap/Speakeasy) -"E" = ( -/obj/structure/bed/chair/comfy/black{ - dir = 1 - }, -/turf/simulated/floor/carpet/turcarpet, -/area/submap/Speakeasy) -"H" = ( -/obj/machinery/vending/boozeomat, -/turf/simulated/floor/wood, -/area/submap/Speakeasy) -"I" = ( -/obj/structure/table/woodentable, -/obj/random/drinkbottle, -/turf/simulated/floor/wood, -/area/submap/Speakeasy) -"K" = ( -/obj/effect/floor_decal/corner/black/diagonal, -/turf/simulated/floor/tiled/neutral, -/area/submap/Speakeasy) -"L" = ( -/obj/structure/bed/chair/wood{ - dir = 8 - }, -/turf/simulated/floor/wood, -/area/submap/Speakeasy) -"M" = ( -/obj/machinery/light/poi{ - dir = 1 - }, -/turf/simulated/floor/carpet/turcarpet, -/area/submap/Speakeasy) -"N" = ( -/obj/structure/table/woodentable, -/turf/simulated/floor/wood, -/area/submap/Speakeasy) -"O" = ( -/obj/machinery/light/poi{ - dir = 1 - }, -/turf/simulated/floor/wood, -/area/submap/Speakeasy) -"R" = ( -/obj/structure/bed/chair/sofa/black{ - dir = 1 - }, -/turf/simulated/floor/wood, -/area/submap/Speakeasy) -"U" = ( -/obj/structure/bed/chair/sofa/blue/right{ - dir = 1 - }, -/turf/simulated/floor/wood, -/area/submap/Speakeasy) -"V" = ( -/obj/structure/table/woodentable, -/obj/machinery/chemical_dispenser/bar_soft/full{ - dir = 1 - }, -/turf/simulated/floor/wood, -/area/submap/Speakeasy) -"W" = ( -/obj/structure/bed/chair/wood, -/turf/simulated/floor/wood, -/area/submap/Speakeasy) -"X" = ( -/obj/structure/table/woodentable, -/obj/machinery/chemical_dispenser/bar_alc/full, -/turf/simulated/floor/wood, -/area/submap/Speakeasy) -"Y" = ( -/obj/structure/table/fancyblack, -/obj/random/cash/big, -/turf/simulated/floor/carpet/turcarpet, -/area/submap/Speakeasy) - -(1,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -"} -(2,1,1) = {" -a -w -w -w -w -w -w -w -w -w -w -w -a -a -a -a -"} -(3,1,1) = {" -a -w -n -i -h -w -X -B -V -B -p -w -w -w -a -a -"} -(4,1,1) = {" -a -w -n -B -B -w -H -B -N -k -B -x -D -w -a -a -"} -(5,1,1) = {" -a -w -w -j -j -w -w -B -I -k -B -f -R -w -a -a -"} -(6,1,1) = {" -a -w -B -B -B -B -w -O -N -k -B -f -U -w -w -a -"} -(7,1,1) = {" -a -w -M -Y -c -B -w -B -I -k -B -B -B -B -w -C -"} -(8,1,1) = {" -a -w -l -v -E -B -o -B -N -k -B -B -B -B -o -C -"} -(9,1,1) = {" -a -w -M -Y -c -B -w -B -N -k -B -B -B -B -w -C -"} -(10,1,1) = {" -a -w -B -B -B -B -w -B -I -k -B -B -B -B -w -a -"} -(11,1,1) = {" -a -w -w -w -w -w -w -B -B -B -K -K -K -s -w -a -"} -(12,1,1) = {" -a -a -w -f -g -B -B -B -B -B -K -K -K -f -w -a -"} -(13,1,1) = {" -a -a -w -L -B -W -N -N -g -B -K -K -K -L -w -a -"} -(14,1,1) = {" -a -a -w -w -B -W -m -N -g -B -W -u -g -w -w -a -"} -(15,1,1) = {" -a -a -a -w -w -w -w -w -w -w -w -w -w -w -a -a -"} -(16,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -"} +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/template_noop, +/area/submap/Speakeasy) +"c" = ( +/turf/simulated/floor/carpet/turcarpet, +/area/submap/Speakeasy) +"f" = ( +/obj/structure/table/gamblingtable, +/turf/simulated/floor/wood, +/area/submap/Speakeasy) +"g" = ( +/obj/structure/bed/chair/wood{ + dir = 1 + }, +/turf/simulated/floor/wood, +/area/submap/Speakeasy) +"h" = ( +/obj/random/handgun, +/turf/simulated/floor/wood, +/area/submap/Speakeasy) +"i" = ( +/obj/item/clothing/head/fedora, +/turf/simulated/floor/wood, +/area/submap/Speakeasy) +"j" = ( +/obj/structure/bookcase, +/turf/simulated/floor/wood, +/area/submap/Speakeasy) +"k" = ( +/obj/item/weapon/stool/padded, +/turf/simulated/floor/wood, +/area/submap/Speakeasy) +"l" = ( +/obj/structure/bed/chair/comfy/black, +/turf/simulated/floor/carpet/turcarpet, +/area/submap/Speakeasy) +"m" = ( +/obj/structure/table/woodentable, +/obj/machinery/light/poi{ + dir = 4 + }, +/turf/simulated/floor/wood, +/area/submap/Speakeasy) +"n" = ( +/obj/structure/reagent_dispensers/beerkeg, +/turf/simulated/floor/wood, +/area/submap/Speakeasy) +"o" = ( +/obj/structure/simple_door/wood, +/turf/simulated/floor/wood, +/area/submap/Speakeasy) +"p" = ( +/obj/machinery/media/jukebox, +/turf/simulated/floor/wood, +/area/submap/Speakeasy) +"s" = ( +/obj/structure/bed/chair/wood{ + dir = 4 + }, +/turf/simulated/floor/wood, +/area/submap/Speakeasy) +"u" = ( +/obj/structure/table/gamblingtable, +/obj/machinery/light/poi{ + dir = 4 + }, +/turf/simulated/floor/wood, +/area/submap/Speakeasy) +"v" = ( +/obj/structure/table/fancyblack, +/obj/item/clothing/mask/smokable/cigarette/cigar, +/turf/simulated/floor/carpet/turcarpet, +/area/submap/Speakeasy) +"w" = ( +/turf/simulated/wall/wood, +/area/submap/Speakeasy) +"x" = ( +/obj/structure/bed/chair/sofa/left/blue{ + dir = 4 + }, +/turf/simulated/floor/wood, +/area/submap/Speakeasy) +"B" = ( +/turf/simulated/floor/wood, +/area/submap/Speakeasy) +"C" = ( +/turf/simulated/mineral/floor/cave, +/area/submap/Speakeasy) +"D" = ( +/obj/structure/bed/chair/sofa/corner/black{ + dir = 4 + }, +/turf/simulated/floor/wood, +/area/submap/Speakeasy) +"E" = ( +/obj/structure/bed/chair/comfy/black{ + dir = 1 + }, +/turf/simulated/floor/carpet/turcarpet, +/area/submap/Speakeasy) +"H" = ( +/obj/machinery/vending/boozeomat, +/turf/simulated/floor/wood, +/area/submap/Speakeasy) +"I" = ( +/obj/structure/table/woodentable, +/obj/random/drinkbottle, +/turf/simulated/floor/wood, +/area/submap/Speakeasy) +"K" = ( +/obj/effect/floor_decal/corner/black/diagonal, +/turf/simulated/floor/tiled/neutral, +/area/submap/Speakeasy) +"L" = ( +/obj/structure/bed/chair/wood{ + dir = 8 + }, +/turf/simulated/floor/wood, +/area/submap/Speakeasy) +"M" = ( +/obj/machinery/light/poi{ + dir = 1 + }, +/turf/simulated/floor/carpet/turcarpet, +/area/submap/Speakeasy) +"N" = ( +/obj/structure/table/woodentable, +/turf/simulated/floor/wood, +/area/submap/Speakeasy) +"O" = ( +/obj/machinery/light/poi{ + dir = 1 + }, +/turf/simulated/floor/wood, +/area/submap/Speakeasy) +"R" = ( +/obj/structure/bed/chair/sofa/black{ + dir = 1 + }, +/turf/simulated/floor/wood, +/area/submap/Speakeasy) +"U" = ( +/obj/structure/bed/chair/sofa/right/blue{ + dir = 1 + }, +/turf/simulated/floor/wood, +/area/submap/Speakeasy) +"V" = ( +/obj/structure/table/woodentable, +/obj/machinery/chemical_dispenser/bar_soft/full{ + dir = 1 + }, +/turf/simulated/floor/wood, +/area/submap/Speakeasy) +"W" = ( +/obj/structure/bed/chair/wood, +/turf/simulated/floor/wood, +/area/submap/Speakeasy) +"X" = ( +/obj/structure/table/woodentable, +/obj/machinery/chemical_dispenser/bar_alc/full, +/turf/simulated/floor/wood, +/area/submap/Speakeasy) +"Y" = ( +/obj/structure/table/fancyblack, +/obj/random/cash/big, +/turf/simulated/floor/carpet/turcarpet, +/area/submap/Speakeasy) + +(1,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(2,1,1) = {" +a +w +w +w +w +w +w +w +w +w +w +w +a +a +a +a +"} +(3,1,1) = {" +a +w +n +i +h +w +X +B +V +B +p +w +w +w +a +a +"} +(4,1,1) = {" +a +w +n +B +B +w +H +B +N +k +B +x +D +w +a +a +"} +(5,1,1) = {" +a +w +w +j +j +w +w +B +I +k +B +f +R +w +a +a +"} +(6,1,1) = {" +a +w +B +B +B +B +w +O +N +k +B +f +U +w +w +a +"} +(7,1,1) = {" +a +w +M +Y +c +B +w +B +I +k +B +B +B +B +w +C +"} +(8,1,1) = {" +a +w +l +v +E +B +o +B +N +k +B +B +B +B +o +C +"} +(9,1,1) = {" +a +w +M +Y +c +B +w +B +N +k +B +B +B +B +w +C +"} +(10,1,1) = {" +a +w +B +B +B +B +w +B +I +k +B +B +B +B +w +a +"} +(11,1,1) = {" +a +w +w +w +w +w +w +B +B +B +K +K +K +s +w +a +"} +(12,1,1) = {" +a +a +w +f +g +B +B +B +B +B +K +K +K +f +w +a +"} +(13,1,1) = {" +a +a +w +L +B +W +N +N +g +B +K +K +K +L +w +a +"} +(14,1,1) = {" +a +a +w +w +B +W +m +N +g +B +W +u +g +w +w +a +"} +(15,1,1) = {" +a +a +a +w +w +w +w +w +w +w +w +w +w +w +a +a +"} +(16,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} diff --git a/maps/gateway_vr/eggnogtown.dmm b/maps/gateway_vr/eggnogtown.dmm index bd5ed9b94c..de787f7cab 100644 --- a/maps/gateway_vr/eggnogtown.dmm +++ b/maps/gateway_vr/eggnogtown.dmm @@ -1502,6 +1502,7 @@ "nd" = ( /obj/structure/bed/double, /obj/structure/lattice, +/obj/structure/curtain/black, /turf/simulated/open, /area/gateway/eggnogtown/houserhomestead) "ne" = ( @@ -3111,7 +3112,7 @@ }, /obj/item/weapon/card/id{ access = list(777); - name = "Houser's secret hidde keycard"; + name = "Houser's secret hidden keycard"; registered_name = "Houser" }, /obj/machinery/light/small{ diff --git a/maps/gateway_vr/eggnogtownunderground.dmm b/maps/gateway_vr/eggnogtownunderground.dmm index e22ca270f6..d7ea90b144 100644 --- a/maps/gateway_vr/eggnogtownunderground.dmm +++ b/maps/gateway_vr/eggnogtownunderground.dmm @@ -203,7 +203,7 @@ check_arrest = 0; check_down = 0; check_records = 0; - control_area = /area/submap/admin_upload/lo/pow; + control_area = /area/gateway/eggnogtown/houserhomestead/basement; desc = "A firewall prevents AIs from interacting with this device."; lethal_is_configurable = 0; name = "DEATH RAY CONTROL"; diff --git a/maps/stellardelight/stellar_delight3.dmm b/maps/stellardelight/stellar_delight3.dmm index 299c0bacca..94b58cab54 100644 --- a/maps/stellardelight/stellar_delight3.dmm +++ b/maps/stellardelight/stellar_delight3.dmm @@ -349,6 +349,9 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/carpet/purcarpet, /area/crew_quarters/heads/hor) +"by" = ( +/turf/simulated/wall/bay/r_wall/steel, +/area/maintenance/stellardelight/deck3/starboardaft) "bB" = ( /obj/structure/cable{ icon_state = "1-2" @@ -1401,7 +1404,7 @@ icon_state = "4-8" }, /turf/simulated/floor/tiled/steel_ridged, -/area/maintenance/stellardelight/deck3/portaft) +/area/maintenance/stellardelight/deck3/starboardaft) "fg" = ( /obj/structure/handrail{ dir = 1 @@ -2096,7 +2099,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor, -/area/maintenance/stellardelight/deck3/portaft) +/area/maintenance/stellardelight/deck3/starboardaft) "ii" = ( /turf/simulated/floor, /area/maintenance/stellardelight/substation/command) @@ -2160,7 +2163,7 @@ dir = 9 }, /turf/simulated/floor, -/area/maintenance/stellardelight/deck3/portaft) +/area/maintenance/stellardelight/deck3/starboardaft) "iw" = ( /obj/structure/cable{ icon_state = "4-8" @@ -2297,7 +2300,7 @@ "iS" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor, -/area/maintenance/stellardelight/deck3/portaft) +/area/maintenance/stellardelight/deck3/starboardaft) "iV" = ( /obj/structure/railing/grey{ dir = 4 @@ -2865,7 +2868,7 @@ }, /obj/structure/railing/grey, /turf/simulated/open, -/area/maintenance/stellardelight/deck3/portaft) +/area/maintenance/stellardelight/deck3/starboardaft) "lh" = ( /obj/machinery/door/firedoor/glass, /obj/machinery/door/airlock/angled_bay/hatch{ @@ -3039,7 +3042,7 @@ icon_state = "1-2" }, /turf/simulated/floor, -/area/maintenance/stellardelight/deck3/portaft) +/area/maintenance/stellardelight/deck3/starboardaft) "lH" = ( /obj/machinery/telecomms/server/presets/service/sd, /turf/simulated/floor/tiled/dark{ @@ -3356,7 +3359,7 @@ dir = 8 }, /turf/simulated/floor, -/area/maintenance/stellardelight/deck3/portaft) +/area/maintenance/stellardelight/deck3/starboardaft) "mM" = ( /obj/structure/cable/green{ icon_state = "1-4" @@ -3632,7 +3635,7 @@ /obj/random/maintenance/engineering, /obj/random/maintenance/engineering, /turf/simulated/floor, -/area/maintenance/stellardelight/deck3/portaft) +/area/maintenance/stellardelight/deck3/starboardaft) "nF" = ( /obj/structure/table/woodentable, /obj/machinery/atmospherics/unary/vent_scrubber/on{ @@ -4589,7 +4592,7 @@ "qS" = ( /obj/machinery/light/small, /turf/simulated/floor, -/area/maintenance/stellardelight/deck3/portaft) +/area/maintenance/stellardelight/deck3/starboardaft) "qU" = ( /obj/machinery/light{ dir = 4 @@ -4625,8 +4628,11 @@ dir = 5 }, /obj/structure/reagent_dispensers/fueltank, +/obj/machinery/alarm/angled{ + dir = 4 + }, /turf/simulated/floor, -/area/maintenance/stellardelight/deck3/portaft) +/area/maintenance/stellardelight/deck3/starboardaft) "qZ" = ( /obj/structure/filingcabinet/chestdrawer, /obj/machinery/power/apc/angled{ @@ -5200,7 +5206,7 @@ dir = 4 }, /turf/simulated/floor, -/area/maintenance/stellardelight/deck3/portaft) +/area/maintenance/stellardelight/deck3/starboardaft) "tn" = ( /obj/machinery/light_switch{ dir = 8; @@ -5461,6 +5467,12 @@ "uq" = ( /turf/simulated/wall/bay/r_wall/steel, /area/stellardelight/deck3/starboarddock) +"ur" = ( +/obj/structure/cable/green{ + icon_state = "4-8" + }, +/turf/simulated/wall/bay/r_wall/steel, +/area/maintenance/stellardelight/deck3/starboardaft) "us" = ( /obj/machinery/light{ dir = 4 @@ -5654,7 +5666,7 @@ dir = 8 }, /turf/simulated/floor, -/area/maintenance/stellardelight/deck3/portaft) +/area/maintenance/stellardelight/deck3/starboardaft) "uZ" = ( /obj/structure/cable/blue{ icon_state = "1-2" @@ -5773,7 +5785,7 @@ }, /obj/machinery/portable_atmospherics/canister/air/airlock, /turf/simulated/floor, -/area/maintenance/stellardelight/deck3/portaft) +/area/maintenance/stellardelight/deck3/starboardaft) "vA" = ( /obj/machinery/power/apc/angled{ dir = 1; @@ -6029,7 +6041,7 @@ }, /obj/machinery/portable_atmospherics/canister/air/airlock, /turf/simulated/floor, -/area/maintenance/stellardelight/deck3/portaft) +/area/maintenance/stellardelight/deck3/starboardaft) "wy" = ( /obj/structure/lattice, /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ @@ -7161,7 +7173,7 @@ dir = 5 }, /turf/simulated/floor, -/area/maintenance/stellardelight/deck3/portaft) +/area/maintenance/stellardelight/deck3/starboardaft) "At" = ( /obj/structure/table/glass, /obj/item/device/flashlight/lamp/green, @@ -7253,6 +7265,10 @@ }, /turf/simulated/floor, /area/maintenance/stellardelight/deck3/starboardcent) +"AK" = ( +/obj/random/trash_pile, +/turf/simulated/floor, +/area/maintenance/stellardelight/deck3/starboardaft) "AP" = ( /obj/machinery/power/apc/angled{ dir = 4 @@ -7295,7 +7311,7 @@ stripe_color = "#454545" }, /turf/simulated/floor, -/area/maintenance/stellardelight/deck3/portaft) +/area/maintenance/stellardelight/deck3/starboardaft) "AU" = ( /obj/machinery/light/small, /obj/machinery/atmospherics/unary/vent_scrubber/on{ @@ -7408,7 +7424,7 @@ dir = 4 }, /turf/simulated/floor/tiled/steel_ridged, -/area/maintenance/stellardelight/deck3/portaft) +/area/maintenance/stellardelight/deck3/starboardaft) "Bj" = ( /obj/machinery/message_server, /turf/simulated/floor/tiled/techfloor/grid, @@ -7597,7 +7613,7 @@ /obj/random/maintenance/research, /obj/random/maintenance/research, /turf/simulated/floor, -/area/maintenance/stellardelight/deck3/portaft) +/area/maintenance/stellardelight/deck3/starboardaft) "BH" = ( /turf/simulated/floor/carpet, /area/crew_quarters/heads/hos) @@ -7941,6 +7957,12 @@ }, /turf/simulated/open, /area/stellardelight/deck2/starboard) +"CK" = ( +/obj/machinery/door/firedoor/glass, +/obj/structure/window/bay/reinforced, +/obj/structure/low_wall/bay/reinforced/steel, +/turf/simulated/floor, +/area/maintenance/stellardelight/deck3/starboardaft) "CO" = ( /obj/effect/overmap/visitable/ship/stellar_delight, /turf/space, @@ -8065,7 +8087,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/structure/reagent_dispensers/watertank, /turf/simulated/floor, -/area/maintenance/stellardelight/deck3/portaft) +/area/maintenance/stellardelight/deck3/starboardaft) "Dn" = ( /obj/effect/floor_decal/steeldecal/steel_decals5{ dir = 4 @@ -8463,7 +8485,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden, /turf/simulated/floor, -/area/maintenance/stellardelight/deck3/portaft) +/area/maintenance/stellardelight/deck3/starboardaft) "EU" = ( /obj/structure/cable/blue{ icon_state = "2-8" @@ -8760,7 +8782,7 @@ icon_state = "1-2" }, /turf/simulated/floor, -/area/maintenance/stellardelight/deck3/portaft) +/area/maintenance/stellardelight/deck3/starboardaft) "Ge" = ( /obj/structure/table/standard, /obj/item/weapon/aiModule/nanotrasen, @@ -8855,7 +8877,7 @@ dir = 10 }, /turf/simulated/floor, -/area/maintenance/stellardelight/deck3/portaft) +/area/maintenance/stellardelight/deck3/starboardaft) "Gv" = ( /obj/structure/sign/deck3{ pixel_x = -32 @@ -9187,7 +9209,7 @@ /obj/random/maintenance, /obj/random/maintenance, /turf/simulated/floor, -/area/maintenance/stellardelight/deck3/portaft) +/area/maintenance/stellardelight/deck3/starboardaft) "HH" = ( /obj/structure/closet/emcloset, /obj/effect/floor_decal/steeldecal/steel_decals5{ @@ -10004,7 +10026,7 @@ "Kt" = ( /obj/machinery/atmospherics/pipe/simple/hidden/universal, /turf/simulated/floor, -/area/maintenance/stellardelight/deck3/portaft) +/area/maintenance/stellardelight/deck3/starboardaft) "Kv" = ( /obj/structure/bed/chair{ dir = 4 @@ -10053,7 +10075,7 @@ /obj/random/mre, /obj/random/mre, /turf/simulated/floor, -/area/maintenance/stellardelight/deck3/portaft) +/area/maintenance/stellardelight/deck3/starboardaft) "KD" = ( /obj/machinery/atmospherics/pipe/manifold/hidden{ dir = 1 @@ -10062,7 +10084,7 @@ icon_state = "4-8" }, /turf/simulated/floor, -/area/maintenance/stellardelight/deck3/portaft) +/area/maintenance/stellardelight/deck3/starboardaft) "KF" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 8 @@ -10094,6 +10116,9 @@ "KI" = ( /turf/simulated/floor/wood, /area/stellardelight/deck3/readingroom) +"KJ" = ( +/turf/simulated/floor, +/area/maintenance/stellardelight/deck3/starboardaft) "KL" = ( /obj/machinery/power/apc/angled{ dir = 8 @@ -10182,7 +10207,7 @@ }, /obj/machinery/portable_atmospherics/canister/air/airlock, /turf/simulated/floor, -/area/maintenance/stellardelight/deck3/portaft) +/area/maintenance/stellardelight/deck3/starboardaft) "Le" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on, /obj/structure/flora/pottedplant/minitree, @@ -10274,7 +10299,7 @@ dir = 5 }, /turf/simulated/floor, -/area/maintenance/stellardelight/deck3/portaft) +/area/maintenance/stellardelight/deck3/starboardaft) "Lz" = ( /obj/machinery/newscaster{ pixel_x = 30 @@ -10432,7 +10457,7 @@ icon_state = "1-2" }, /turf/simulated/floor, -/area/maintenance/stellardelight/deck3/portaft) +/area/maintenance/stellardelight/deck3/starboardaft) "Mc" = ( /obj/structure/cable/green{ icon_state = "4-8" @@ -10592,7 +10617,7 @@ }, /obj/random/trash_pile, /turf/simulated/floor, -/area/maintenance/stellardelight/deck3/portaft) +/area/maintenance/stellardelight/deck3/starboardaft) "MC" = ( /obj/structure/cable/green{ icon_state = "4-8" @@ -10740,7 +10765,7 @@ icon_state = "1-2" }, /turf/simulated/floor, -/area/maintenance/stellardelight/deck3/portaft) +/area/maintenance/stellardelight/deck3/starboardaft) "MX" = ( /obj/structure/cable{ icon_state = "4-8" @@ -10804,7 +10829,7 @@ dir = 4 }, /turf/simulated/floor, -/area/maintenance/stellardelight/deck3/portaft) +/area/maintenance/stellardelight/deck3/starboardaft) "Nf" = ( /obj/machinery/light{ dir = 4 @@ -12061,7 +12086,7 @@ dir = 8 }, /turf/simulated/floor, -/area/maintenance/stellardelight/deck3/portaft) +/area/maintenance/stellardelight/deck3/starboardaft) "Ru" = ( /obj/machinery/holoplant, /obj/machinery/camera/network/command{ @@ -12318,6 +12343,12 @@ }, /turf/simulated/floor, /area/maintenance/stellardelight/deck3/foreportrooma) +"Sw" = ( +/obj/machinery/alarm/angled{ + dir = 8 + }, +/turf/simulated/floor, +/area/maintenance/stellardelight/deck3/portaft) "Sz" = ( /obj/structure/cable/green{ icon_state = "4-8" @@ -12938,7 +12969,7 @@ "UQ" = ( /obj/machinery/door/firedoor/glass, /turf/simulated/floor, -/area/maintenance/stellardelight/deck3/portaft) +/area/maintenance/stellardelight/deck3/starboardaft) "UR" = ( /obj/effect/floor_decal/industrial/warning{ dir = 1 @@ -13401,7 +13432,7 @@ icon_state = "1-2" }, /turf/simulated/floor, -/area/maintenance/stellardelight/deck3/portaft) +/area/maintenance/stellardelight/deck3/starboardaft) "Ws" = ( /obj/structure/cable/green{ icon_state = "1-2" @@ -21581,7 +21612,7 @@ dE dE dE dE -dE +Sw dE dE dE @@ -26535,8 +26566,8 @@ Hh eb tC Rq -dE -Yg +KJ +by Pa wR Yy @@ -26677,8 +26708,8 @@ ON Xd Ja Ly -dE -Yg +KJ +by ow Pa ow @@ -26820,26 +26851,26 @@ LR me tk qS -Yg -Yg -Yg -Yg -Yg -Yg -Yg -Yg -Yg -Yg +by +by +by +by +by +by +by +by +by +by Bg -Yg -Yg -Yg -Yg -Yg -Yg -Yg +by +by +by +by +by +by +by ff -Yg +by aA nr lT @@ -26978,7 +27009,7 @@ iS Kz Dk qY -JW +AK Ld KD vy @@ -27101,18 +27132,18 @@ NL NL qy NL -Yg -dE -dE +by +KJ +KJ le ww ww MB Kt iv -dE +KJ UQ -dE +KJ HF nD BG @@ -27243,29 +27274,29 @@ NL NL we NL -Yg -Yg -Yg -Yg -ki -ki -Yg -Yg -Yg -Yg -Yg -Yg -vq -Yg -Yg -Yg -Yg -Yg -Yg -Yg -ki -ki -Yg +by +by +by +by +CK +CK +by +by +by +by +by +by +ur +by +by +by +by +by +by +by +CK +CK +by hQ lq lq diff --git a/maps/submaps/surface_submaps/wilderness/emptycabin.dmm b/maps/submaps/surface_submaps/wilderness/emptycabin.dmm index 25396ef3c8..734f328ca2 100644 --- a/maps/submaps/surface_submaps/wilderness/emptycabin.dmm +++ b/maps/submaps/surface_submaps/wilderness/emptycabin.dmm @@ -1,328 +1,328 @@ -//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE -"a" = ( -/turf/template_noop, -/area/template_noop) -"b" = ( -/obj/effect/decal/cleanable/filth, -/obj/item/weapon/bone/arm, -/obj/item/weapon/bone/skull/unathi, -/turf/simulated/floor/wood/sif, -/area/submap/EmptyCabin) -"c" = ( -/obj/structure/curtain/black, -/obj/structure/simple_door/sifwood, -/turf/simulated/floor/wood/sif, -/area/submap/EmptyCabin) -"d" = ( -/obj/structure/closet/wardrobe, -/obj/item/weapon/material/fishing_rod/modern, -/obj/item/weapon/storage/toolbox/mechanical, -/obj/item/weapon/storage/toolbox/lunchbox/nymph/filled, -/turf/simulated/floor/wood/sif, -/area/submap/EmptyCabin) -"e" = ( -/turf/simulated/wall/sifwood, -/area/submap/EmptyCabin) -"f" = ( -/obj/structure/railing/grey{ - dir = 1 - }, -/turf/simulated/floor/wood/sif, -/area/submap/EmptyCabin) -"g" = ( -/obj/structure/bed/double/padded, -/obj/item/weapon/bedsheet/purpledouble, -/turf/simulated/floor/wood/sif, -/area/submap/EmptyCabin) -"i" = ( -/obj/structure/bed/chair/sofa/blue/left{ - dir = 1 - }, -/turf/simulated/floor/wood/sif, -/area/submap/EmptyCabin) -"k" = ( -/obj/structure/railing/grey{ - dir = 8 - }, -/obj/structure/bed/chair/sofa/left{ - dir = 8 - }, -/turf/simulated/floor/wood/sif, -/area/submap/EmptyCabin) -"l" = ( -/obj/structure/railing/grey{ - dir = 8 - }, -/obj/structure/bed/chair/sofa{ - dir = 8 - }, -/turf/simulated/floor/wood/sif, -/area/submap/EmptyCabin) -"n" = ( -/obj/structure/table/sifwoodentable, -/obj/item/weapon/storage/fancy/candle_box, -/obj/item/weapon/paper/crumpled/bloody{ - info = "I found an otie while picking flowers today. He's so cute! I took him back home, and he seemed quite happy to share food with me. He really likes fish. Though, he never really seems to not be hungry..." - }, -/turf/simulated/floor/wood/sif, -/area/submap/EmptyCabin) -"q" = ( -/obj/structure/railing/grey{ - dir = 4 - }, -/turf/template_noop, -/area/submap/EmptyCabin) -"r" = ( -/obj/effect/landmark/loot_spawn/low, -/turf/simulated/floor/wood/sif, -/area/submap/EmptyCabin) -"t" = ( -/obj/structure/railing/grey, -/turf/simulated/floor/wood/sif, -/area/submap/EmptyCabin) -"y" = ( -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/structure/curtain/black, -/obj/structure/grille/rustic, -/turf/simulated/floor/plating, -/area/submap/EmptyCabin) -"z" = ( -/obj/effect/decal/cleanable/blood/drip{ - icon_state = "4" - }, -/turf/simulated/floor/wood/sif, -/area/submap/EmptyCabin) -"A" = ( -/obj/structure/bonfire/permanent/sifwood, -/obj/structure/railing/grey{ - dir = 8 - }, -/turf/simulated/floor/tiled/eris/steel/techfloor, -/area/submap/EmptyCabin) -"B" = ( -/turf/template_noop, -/area/submap/EmptyCabin) -"C" = ( -/obj/structure/railing/grey{ - dir = 8 - }, -/turf/simulated/floor/wood/sif, -/area/submap/EmptyCabin) -"D" = ( -/turf/simulated/floor/wood/sif, -/area/submap/EmptyCabin) -"F" = ( -/mob/living/simple_mob/otie/friendly/chubby{ - desc = "The classic bioengineered longdog. This one still probably won't tolerate you. What an absolute unit"; - faction = "spiders"; - max_co2 = 0; - max_tox = 0 - }, -/obj/effect/decal/cleanable/blood, -/turf/simulated/floor/wood/sif, -/area/submap/EmptyCabin) -"G" = ( -/obj/structure/bed/chair/sofa/blue{ - dir = 1 - }, -/turf/simulated/floor/wood/sif, -/area/submap/EmptyCabin) -"I" = ( -/obj/structure/table/sifwoodentable, -/obj/item/pizzabox/meat, -/turf/simulated/floor/wood/sif, -/area/submap/EmptyCabin) -"J" = ( -/obj/structure/bed/chair/sofa/blue/right{ - dir = 1 - }, -/turf/simulated/floor/wood/sif, -/area/submap/EmptyCabin) -"L" = ( -/obj/structure/table/sifwoodentable, -/obj/item/weapon/flame/candle/candelabra, -/turf/simulated/floor/wood/sif, -/area/submap/EmptyCabin) -"M" = ( -/obj/item/weapon/bone/leg, -/turf/simulated/floor/wood/sif, -/area/submap/EmptyCabin) -"O" = ( -/obj/structure/railing/grey{ - dir = 8 - }, -/obj/structure/bed/chair/sofa/right{ - dir = 8 - }, -/turf/simulated/floor/wood/sif, -/area/submap/EmptyCabin) -"Q" = ( -/obj/effect/decal/cleanable/blood/drip{ - icon_state = "5" - }, -/obj/effect/decal/cleanable/blood/drip{ - icon_state = "2" - }, -/obj/effect/decal/cleanable/blood/drip, -/obj/effect/decal/cleanable/blood/drip{ - icon_state = "3" - }, -/obj/effect/decal/cleanable/blood, -/turf/simulated/floor/wood/sif, -/area/submap/EmptyCabin) -"R" = ( -/obj/structure/loot_pile/surface, -/turf/template_noop, -/area/template_noop) -"T" = ( -/obj/structure/railing/grey{ - dir = 8 - }, -/turf/template_noop, -/area/submap/EmptyCabin) -"V" = ( -/obj/effect/decal/cleanable/blood/drip{ - icon_state = "5" - }, -/turf/simulated/floor/wood/sif, -/area/submap/EmptyCabin) -"W" = ( -/obj/effect/decal/cleanable/blood/drip, -/obj/effect/decal/cleanable/blood/drip{ - icon_state = "2" - }, -/turf/simulated/floor/wood/sif, -/area/submap/EmptyCabin) -"X" = ( -/obj/item/weapon/bone, -/turf/simulated/floor/wood/sif, -/area/submap/EmptyCabin) -"Z" = ( -/obj/effect/decal/cleanable/blood/drip{ - icon_state = "3" - }, -/turf/simulated/floor/wood/sif, -/area/submap/EmptyCabin) - -(1,1,1) = {" -a -q -e -k -l -l -O -C -e -a -"} -(2,1,1) = {" -a -B -D -D -D -D -D -D -t -a -"} -(3,1,1) = {" -a -T -f -e -e -c -e -e -t -a -"} -(4,1,1) = {" -a -a -e -e -b -M -D -e -e -a -"} -(5,1,1) = {" -a -a -e -g -F -X -L -i -e -a -"} -(6,1,1) = {" -a -a -y -n -W -D -I -G -e -a -"} -(7,1,1) = {" -a -a -e -d -Z -r -D -J -e -a -"} -(8,1,1) = {" -a -a -e -e -z -V -Q -e -e -a -"} -(9,1,1) = {" -a -a -R -e -e -A -e -e -a -a -"} -(10,1,1) = {" -a -a -a -R -e -e -e -a -a -a -"} +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/template_noop, +/area/template_noop) +"b" = ( +/obj/effect/decal/cleanable/filth, +/obj/item/weapon/bone/arm, +/obj/item/weapon/bone/skull/unathi, +/turf/simulated/floor/wood/sif, +/area/submap/EmptyCabin) +"c" = ( +/obj/structure/curtain/black, +/obj/structure/simple_door/sifwood, +/turf/simulated/floor/wood/sif, +/area/submap/EmptyCabin) +"d" = ( +/obj/structure/closet/wardrobe, +/obj/item/weapon/material/fishing_rod/modern, +/obj/item/weapon/storage/toolbox/mechanical, +/obj/item/weapon/storage/toolbox/lunchbox/nymph/filled, +/turf/simulated/floor/wood/sif, +/area/submap/EmptyCabin) +"e" = ( +/turf/simulated/wall/sifwood, +/area/submap/EmptyCabin) +"f" = ( +/obj/structure/railing/grey{ + dir = 1 + }, +/turf/simulated/floor/wood/sif, +/area/submap/EmptyCabin) +"g" = ( +/obj/structure/bed/double/padded, +/obj/item/weapon/bedsheet/purpledouble, +/turf/simulated/floor/wood/sif, +/area/submap/EmptyCabin) +"i" = ( +/obj/structure/bed/chair/sofa/left/blue{ + dir = 1 + }, +/turf/simulated/floor/wood/sif, +/area/submap/EmptyCabin) +"k" = ( +/obj/structure/railing/grey{ + dir = 8 + }, +/obj/structure/bed/chair/sofa/left{ + dir = 8 + }, +/turf/simulated/floor/wood/sif, +/area/submap/EmptyCabin) +"l" = ( +/obj/structure/railing/grey{ + dir = 8 + }, +/obj/structure/bed/chair/sofa{ + dir = 8 + }, +/turf/simulated/floor/wood/sif, +/area/submap/EmptyCabin) +"n" = ( +/obj/structure/table/sifwoodentable, +/obj/item/weapon/storage/fancy/candle_box, +/obj/item/weapon/paper/crumpled/bloody{ + info = "I found an otie while picking flowers today. He's so cute! I took him back home, and he seemed quite happy to share food with me. He really likes fish. Though, he never really seems to not be hungry..." + }, +/turf/simulated/floor/wood/sif, +/area/submap/EmptyCabin) +"q" = ( +/obj/structure/railing/grey{ + dir = 4 + }, +/turf/template_noop, +/area/submap/EmptyCabin) +"r" = ( +/obj/effect/landmark/loot_spawn/low, +/turf/simulated/floor/wood/sif, +/area/submap/EmptyCabin) +"t" = ( +/obj/structure/railing/grey, +/turf/simulated/floor/wood/sif, +/area/submap/EmptyCabin) +"y" = ( +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/curtain/black, +/obj/structure/grille/rustic, +/turf/simulated/floor/plating, +/area/submap/EmptyCabin) +"z" = ( +/obj/effect/decal/cleanable/blood/drip{ + icon_state = "4" + }, +/turf/simulated/floor/wood/sif, +/area/submap/EmptyCabin) +"A" = ( +/obj/structure/bonfire/permanent/sifwood, +/obj/structure/railing/grey{ + dir = 8 + }, +/turf/simulated/floor/tiled/eris/steel/techfloor, +/area/submap/EmptyCabin) +"B" = ( +/turf/template_noop, +/area/submap/EmptyCabin) +"C" = ( +/obj/structure/railing/grey{ + dir = 8 + }, +/turf/simulated/floor/wood/sif, +/area/submap/EmptyCabin) +"D" = ( +/turf/simulated/floor/wood/sif, +/area/submap/EmptyCabin) +"F" = ( +/mob/living/simple_mob/otie/friendly/chubby{ + desc = "The classic bioengineered longdog. This one still probably won't tolerate you. What an absolute unit"; + faction = "spiders"; + max_co2 = 0; + max_tox = 0 + }, +/obj/effect/decal/cleanable/blood, +/turf/simulated/floor/wood/sif, +/area/submap/EmptyCabin) +"G" = ( +/obj/structure/bed/chair/sofa/blue{ + dir = 1 + }, +/turf/simulated/floor/wood/sif, +/area/submap/EmptyCabin) +"I" = ( +/obj/structure/table/sifwoodentable, +/obj/item/pizzabox/meat, +/turf/simulated/floor/wood/sif, +/area/submap/EmptyCabin) +"J" = ( +/obj/structure/bed/chair/sofa/right/blue{ + dir = 1 + }, +/turf/simulated/floor/wood/sif, +/area/submap/EmptyCabin) +"L" = ( +/obj/structure/table/sifwoodentable, +/obj/item/weapon/flame/candle/candelabra, +/turf/simulated/floor/wood/sif, +/area/submap/EmptyCabin) +"M" = ( +/obj/item/weapon/bone/leg, +/turf/simulated/floor/wood/sif, +/area/submap/EmptyCabin) +"O" = ( +/obj/structure/railing/grey{ + dir = 8 + }, +/obj/structure/bed/chair/sofa/right{ + dir = 8 + }, +/turf/simulated/floor/wood/sif, +/area/submap/EmptyCabin) +"Q" = ( +/obj/effect/decal/cleanable/blood/drip{ + icon_state = "5" + }, +/obj/effect/decal/cleanable/blood/drip{ + icon_state = "2" + }, +/obj/effect/decal/cleanable/blood/drip, +/obj/effect/decal/cleanable/blood/drip{ + icon_state = "3" + }, +/obj/effect/decal/cleanable/blood, +/turf/simulated/floor/wood/sif, +/area/submap/EmptyCabin) +"R" = ( +/obj/structure/loot_pile/surface, +/turf/template_noop, +/area/template_noop) +"T" = ( +/obj/structure/railing/grey{ + dir = 8 + }, +/turf/template_noop, +/area/submap/EmptyCabin) +"V" = ( +/obj/effect/decal/cleanable/blood/drip{ + icon_state = "5" + }, +/turf/simulated/floor/wood/sif, +/area/submap/EmptyCabin) +"W" = ( +/obj/effect/decal/cleanable/blood/drip, +/obj/effect/decal/cleanable/blood/drip{ + icon_state = "2" + }, +/turf/simulated/floor/wood/sif, +/area/submap/EmptyCabin) +"X" = ( +/obj/item/weapon/bone, +/turf/simulated/floor/wood/sif, +/area/submap/EmptyCabin) +"Z" = ( +/obj/effect/decal/cleanable/blood/drip{ + icon_state = "3" + }, +/turf/simulated/floor/wood/sif, +/area/submap/EmptyCabin) + +(1,1,1) = {" +a +q +e +k +l +l +O +C +e +a +"} +(2,1,1) = {" +a +B +D +D +D +D +D +D +t +a +"} +(3,1,1) = {" +a +T +f +e +e +c +e +e +t +a +"} +(4,1,1) = {" +a +a +e +e +b +M +D +e +e +a +"} +(5,1,1) = {" +a +a +e +g +F +X +L +i +e +a +"} +(6,1,1) = {" +a +a +y +n +W +D +I +G +e +a +"} +(7,1,1) = {" +a +a +e +d +Z +r +D +J +e +a +"} +(8,1,1) = {" +a +a +e +e +z +V +Q +e +e +a +"} +(9,1,1) = {" +a +a +R +e +e +A +e +e +a +a +"} +(10,1,1) = {" +a +a +a +R +e +e +e +a +a +a +"} diff --git a/maps/tether/tether-01-surface1.dmm b/maps/tether/tether-01-surface1.dmm index cb9f6904ed..f658a6da07 100644 --- a/maps/tether/tether-01-surface1.dmm +++ b/maps/tether/tether-01-surface1.dmm @@ -33290,7 +33290,7 @@ "gWO" = ( /obj/structure/table/rack, /obj/effect/floor_decal/rust, -/obj/item/toy/crossbow, +/obj/item/weapon/gun/projectile/revolver/toy/crossbow, /turf/simulated/floor/plating, /area/tether/surfacebase/funny/hideyhole) "gYx" = ( @@ -36719,8 +36719,8 @@ /area/maintenance/lower/trash_pit) "qhs" = ( /obj/structure/table/rack, -/obj/item/toy/crossbow, /obj/item/weapon/coin/silver, +/obj/item/weapon/gun/projectile/revolver/toy/crossbow, /turf/simulated/floor/plating, /area/tether/surfacebase/funny/hideyhole) "qjE" = ( diff --git a/maps/tether/tether-03-surface3.dmm b/maps/tether/tether-03-surface3.dmm index 61598a61f4..5a9fd154e5 100644 --- a/maps/tether/tether-03-surface3.dmm +++ b/maps/tether/tether-03-surface3.dmm @@ -32172,7 +32172,6 @@ /obj/item/weapon/soap/nanotrasen, /obj/item/weapon/soap/deluxe, /obj/item/weapon/staff/gentcane, -/obj/item/toy/crossbow, /obj/item/toy/eight_ball/conch, /obj/item/weapon/cell/potato, /obj/structure/cable/green{ @@ -32182,6 +32181,7 @@ }, /obj/item/device/megaphone, /obj/random/cutout, +/obj/item/weapon/gun/projectile/revolver/toy/crossbow, /turf/simulated/floor/lino, /area/tether/surfacebase/entertainment/backstage) "bcV" = ( diff --git a/maps/tether/tether_things.dm b/maps/tether/tether_things.dm index cd0c67ab60..91f1435f05 100644 --- a/maps/tether/tether_things.dm +++ b/maps/tether/tether_things.dm @@ -264,27 +264,6 @@ /obj/machinery/power/supermatter/touch_map_edge() qdel(src) -//Airlock antitox vendor -/obj/machinery/vending/wallmed_airlock - name = "Airlock NanoMed" - desc = "Wall-mounted Medical Equipment dispenser. This limited-use version dispenses antitoxins with mild painkillers for surface EVAs." - icon_state = "wallmed" - density = 0 //It is wall-mounted, and thus, not dense. --Superxpdude - products = list(/obj/item/weapon/reagent_containers/pill/airlock = 20) - contraband = list(/obj/item/weapon/reagent_containers/pill/tox = 2) - req_log_access = access_cmo - has_logs = 1 - -/obj/item/weapon/reagent_containers/pill/airlock - name = "\'Airlock\' Pill" - desc = "Neutralizes toxins and provides a mild analgesic effect." - icon_state = "pill2" - -/obj/item/weapon/reagent_containers/pill/airlock/New() - ..() - reagents.add_reagent("anti_toxin", 15) - reagents.add_reagent("paracetamol", 5) - //"Red" Armory Door /obj/machinery/door/airlock/security/armory name = "Red Armory" diff --git a/sound/items/sonic_driver.ogg b/sound/items/sonic_driver.ogg new file mode 100644 index 0000000000..d02a2b6709 Binary files /dev/null and b/sound/items/sonic_driver.ogg differ diff --git a/vorestation.dme b/vorestation.dme index 00253b74ad..b049aab1af 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -485,6 +485,7 @@ #include "code\datums\supplypacks\supply.dm" #include "code\datums\supplypacks\supply_vr.dm" #include "code\datums\supplypacks\supplypacks.dm" +#include "code\datums\supplypacks\vending_refills_vr.dm" #include "code\datums\supplypacks\voidsuits.dm" #include "code\datums\supplypacks\voidsuits_vr.dm" #include "code\datums\underwear\bottom.dm" @@ -2209,6 +2210,7 @@ #include "code\modules\economy\vending.dm" #include "code\modules\economy\vending_machines.dm" #include "code\modules\economy\vending_machines_vr.dm" +#include "code\modules\economy\vending_refills.dm" #include "code\modules\economy\vending_yw.dm" #include "code\modules\emotes\emote_define.dm" #include "code\modules\emotes\emote_mob.dm" @@ -3581,6 +3583,7 @@ #include "code\modules\projectiles\dnalocking.dm" #include "code\modules\projectiles\gun.dm" #include "code\modules\projectiles\projectile.dm" +#include "code\modules\projectiles\ammunition\ammo_boxes.dm" #include "code\modules\projectiles\ammunition\magazines.dm" #include "code\modules\projectiles\ammunition\magazines_vr.dm" #include "code\modules\projectiles\ammunition\magazines_yw.dm" @@ -3597,6 +3600,7 @@ #include "code\modules\projectiles\guns\magic.dm" #include "code\modules\projectiles\guns\modular_guns.dm" #include "code\modules\projectiles\guns\projectile.dm" +#include "code\modules\projectiles\guns\toy.dm" #include "code\modules\projectiles\guns\vox.dm" #include "code\modules\projectiles\guns\energy\bsharpoon_vr.dm" #include "code\modules\projectiles\guns\energy\crestrose_vr.dm"