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"