mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-26 18:13:35 +00:00
Merge branch 'master' into tweakfixes
This commit is contained in:
@@ -1,21 +0,0 @@
|
|||||||
/obj/item/device/paicard/attack_ghost(mob/user as mob)
|
|
||||||
if(src.pai != null) //Have a person in them already?
|
|
||||||
user.examinate(src)
|
|
||||||
return
|
|
||||||
var/choice = input(user, "You sure you want to inhabit this PAI?") in list("Yes", "No")
|
|
||||||
var/pai_name = input(user, "Choose your character's name", "Character Name") as text
|
|
||||||
var/actual_pai_name = sanitize_name(pai_name)
|
|
||||||
var/pai_key
|
|
||||||
if (isnull(pai_name))
|
|
||||||
return
|
|
||||||
if(choice == "Yes")
|
|
||||||
pai_key = user.key
|
|
||||||
else
|
|
||||||
return
|
|
||||||
var/turf/location = get_turf(src)
|
|
||||||
var/obj/item/device/paicard/card = new(location)
|
|
||||||
var/mob/living/silicon/pai/pai = new(card)
|
|
||||||
qdel(src)
|
|
||||||
pai.key = pai_key
|
|
||||||
card.setPersonality(pai)
|
|
||||||
pai.SetName(actual_pai_name)
|
|
||||||
@@ -27,3 +27,19 @@
|
|||||||
/datum/looping_sound/geiger/stop()
|
/datum/looping_sound/geiger/stop()
|
||||||
. = ..()
|
. = ..()
|
||||||
last_radiation = 0
|
last_radiation = 0
|
||||||
|
|
||||||
|
/datum/looping_sound/small_motor
|
||||||
|
start_sound = 'sound/items/small_motor/motor_start_nopull.ogg'
|
||||||
|
start_length = 2 SECONDS
|
||||||
|
mid_sounds = list(
|
||||||
|
'sound/items/small_motor/motor_idle.ogg',
|
||||||
|
'sound/items/small_motor/motor_fast.ogg',
|
||||||
|
'sound/items/small_motor/motor_faster.ogg'
|
||||||
|
)
|
||||||
|
mid_length = 1.9 SECONDS //someone make this loop better please, i'm no good at sound. the clips should be 2 seconds exact but there's a gap if it's set to 2
|
||||||
|
end_sound = 'sound/items/small_motor/motor_end.ogg'
|
||||||
|
var/speed = 1
|
||||||
|
|
||||||
|
/datum/looping_sound/small_motor/get_sound(starttime)
|
||||||
|
speed = clamp(speed, 1, 3)
|
||||||
|
return ..(starttime, mid_sounds[speed])
|
||||||
@@ -358,6 +358,13 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
|
|||||||
name = "\improper Thunderdome (Observer.)"
|
name = "\improper Thunderdome (Observer.)"
|
||||||
icon_state = "purple"
|
icon_state = "purple"
|
||||||
|
|
||||||
|
/area/virtual_reality
|
||||||
|
name = "Virtual Reality"
|
||||||
|
icon_state = "Virtual_Reality"
|
||||||
|
dynamic_lighting = 0
|
||||||
|
requires_power = 0
|
||||||
|
flags = AREA_FLAG_IS_NOT_PERSISTENT
|
||||||
|
|
||||||
//ENEMY
|
//ENEMY
|
||||||
|
|
||||||
//names are used
|
//names are used
|
||||||
|
|||||||
@@ -828,3 +828,53 @@
|
|||||||
/obj/item/stack/cable_coil/random = 4)
|
/obj/item/stack/cable_coil/random = 4)
|
||||||
premium = list(/obj/item/weapon/storage/box/wormcan/deluxe = 1)
|
premium = list(/obj/item/weapon/storage/box/wormcan/deluxe = 1)
|
||||||
contraband = list(/obj/item/weapon/storage/box/wormcan/deluxe = 1)
|
contraband = list(/obj/item/weapon/storage/box/wormcan/deluxe = 1)
|
||||||
|
|
||||||
|
|
||||||
|
/obj/machinery/vending/virtual_autodrobe
|
||||||
|
name = "Virtual AutoDrobe"
|
||||||
|
desc = "A virtual vending machine for virtual avatar customization."
|
||||||
|
icon_state = "Theater"
|
||||||
|
product_slogans = "Dress for success!;Suited and booted!;It's show time!;Why leave style up to fate? Use AutoDrobe!"
|
||||||
|
products = list(/obj/item/weapon/storage/box/syndie_kit/chameleon = 20)
|
||||||
|
|
||||||
|
|
||||||
|
/obj/machinery/vending/deathmatch
|
||||||
|
name = "Annihilation Shop (Green)"
|
||||||
|
desc = "A virtual vending machine for virtual murder equipment. This one's for green team."
|
||||||
|
products = list(/obj/item/weapon/melee/energy/sword = 5,
|
||||||
|
/obj/item/weapon/melee/energy/axe = 5,
|
||||||
|
/obj/item/weapon/melee/baton/loaded = 5,
|
||||||
|
/obj/item/weapon/gun/energy/laser = 5,
|
||||||
|
/obj/item/weapon/gun/projectile/shotgun/pump/combat = 5,
|
||||||
|
/obj/item/ammo_magazine/clip/c12g/pellet = 40,
|
||||||
|
/obj/item/ammo_magazine/clip/c12g = 50,
|
||||||
|
/obj/item/weapon/storage/box/flashbangs = 2,
|
||||||
|
/obj/item/clothing/head/helmet/swat = 5,
|
||||||
|
/obj/item/clothing/suit/armor/vest = 5,
|
||||||
|
/obj/item/clothing/head/helmet/thunderdome = 5,
|
||||||
|
/obj/item/clothing/shoes/brown = 5,
|
||||||
|
/obj/item/clothing/suit/armor/tdome/green = 5,
|
||||||
|
/obj/item/clothing/under/color/green = 5,
|
||||||
|
/obj/item/weapon/reagent_containers/pill/adminordrazine = 10,
|
||||||
|
/obj/item/weapon/tool/crowbar = 1)
|
||||||
|
|
||||||
|
|
||||||
|
/obj/machinery/vending/deathmatch/red
|
||||||
|
name = "Annihilation Shop (Red)"
|
||||||
|
desc = "A virtual vending machine for virtual murder equipment. This one's for red team."
|
||||||
|
products = list(/obj/item/weapon/melee/energy/sword = 5,
|
||||||
|
/obj/item/weapon/melee/energy/axe = 5,
|
||||||
|
/obj/item/weapon/melee/baton/loaded = 5,
|
||||||
|
/obj/item/weapon/gun/energy/laser = 5,
|
||||||
|
/obj/item/weapon/gun/projectile/shotgun/pump/combat = 5,
|
||||||
|
/obj/item/ammo_magazine/clip/c12g/pellet = 40,
|
||||||
|
/obj/item/ammo_magazine/clip/c12g = 50,
|
||||||
|
/obj/item/weapon/storage/box/flashbangs = 2,
|
||||||
|
/obj/item/clothing/head/helmet/swat = 5,
|
||||||
|
/obj/item/clothing/suit/armor/vest = 5,
|
||||||
|
/obj/item/clothing/head/helmet/thunderdome = 5,
|
||||||
|
/obj/item/clothing/shoes/brown = 5,
|
||||||
|
/obj/item/clothing/suit/armor/tdome/red = 5,
|
||||||
|
/obj/item/clothing/under/color/red = 5,
|
||||||
|
/obj/item/weapon/reagent_containers/pill/adminordrazine = 10,
|
||||||
|
/obj/item/weapon/tool/crowbar = 1)
|
||||||
|
|||||||
@@ -33,23 +33,29 @@ GLOBAL_LIST_BOILERPLATE(all_pai_cards, /obj/item/device/paicard)
|
|||||||
QDEL_NULL(radio)
|
QDEL_NULL(radio)
|
||||||
return ..()
|
return ..()
|
||||||
|
|
||||||
/obj/item/device/paicard/attack_ghost(mob/observer/dead/user)
|
// VOREStation Edit - Allow everyone to become a pAI
|
||||||
if(istype(user) && user.can_admin_interact())
|
/obj/item/device/paicard/attack_ghost(mob/user as mob)
|
||||||
switch(alert(user, "Would you like to become a pAI by force? (Admin)", "pAI Creation", "Yes", "No"))
|
if(pai != null) //Have a person in them already?
|
||||||
if("Yes")
|
return ..()
|
||||||
// Copied from paiController/Topic
|
|
||||||
var/mob/living/silicon/pai/pai = new(src)
|
|
||||||
pai.name = user.name
|
|
||||||
pai.real_name = pai.name
|
|
||||||
pai.key = user.key
|
|
||||||
|
|
||||||
setPersonality(pai)
|
var/choice = input(user, "You sure you want to inhabit this PAI?") in list("Yes", "No")
|
||||||
looking_for_personality = FALSE
|
if(choice == "No")
|
||||||
|
return ..()
|
||||||
|
|
||||||
if(pai.mind)
|
var/pai_name = input(user, "Choose your character's name", "Character Name") as text
|
||||||
update_antag_icons(pai.mind)
|
var/actual_pai_name = sanitize_name(pai_name)
|
||||||
|
if(isnull(actual_pai_name))
|
||||||
|
return ..()
|
||||||
|
|
||||||
|
var/turf/location = get_turf(src)
|
||||||
|
var/obj/item/device/paicard/card = new(location)
|
||||||
|
var/mob/living/silicon/pai/new_pai = new(card)
|
||||||
|
qdel(src)
|
||||||
|
new_pai.key = user.key
|
||||||
|
card.setPersonality(new_pai)
|
||||||
|
new_pai.SetName(actual_pai_name)
|
||||||
return ..()
|
return ..()
|
||||||
|
// VOREStation Edit End
|
||||||
|
|
||||||
/obj/item/device/paicard/attack_self(mob/user)
|
/obj/item/device/paicard/attack_self(mob/user)
|
||||||
if (!in_range(src, user))
|
if (!in_range(src, user))
|
||||||
|
|||||||
@@ -34,11 +34,6 @@
|
|||||||
log_admin("[key_name(src)] has attempted to advertise in OOC: [msg]")
|
log_admin("[key_name(src)] has attempted to advertise in OOC: [msg]")
|
||||||
message_admins("[key_name_admin(src)] has attempted to advertise in OOC: [msg]")
|
message_admins("[key_name_admin(src)] has attempted to advertise in OOC: [msg]")
|
||||||
return
|
return
|
||||||
//VOREStation Add - No talking during voting
|
|
||||||
if(SSvote && SSvote.mode)
|
|
||||||
to_chat(src, "<span class='danger'>OOC is not allowed during voting.</span>")
|
|
||||||
return
|
|
||||||
//VOREStation Add End
|
|
||||||
if(findtext(msg, "discord.gg") && !config.allow_discord_links)
|
if(findtext(msg, "discord.gg") && !config.allow_discord_links)
|
||||||
to_chat(src, "<B>Advertising discords is not allowed.</B>")
|
to_chat(src, "<B>Advertising discords is not allowed.</B>")
|
||||||
log_admin("[key_name(src)] has attempted to advertise a discord server in OOC: [msg]")
|
log_admin("[key_name(src)] has attempted to advertise a discord server in OOC: [msg]")
|
||||||
|
|||||||
@@ -91,7 +91,7 @@
|
|||||||
EQUIPMENT("Fine Excavation Kit - Measuring Tape", /obj/item/device/measuring_tape, 125),
|
EQUIPMENT("Fine Excavation Kit - Measuring Tape", /obj/item/device/measuring_tape, 125),
|
||||||
EQUIPMENT("Fine Excavation Kit - Hand Pick", /obj/item/weapon/pickaxe/hand, 375),
|
EQUIPMENT("Fine Excavation Kit - Hand Pick", /obj/item/weapon/pickaxe/hand, 375),
|
||||||
EQUIPMENT("Explosive Excavation Kit - Plastic Charge",/obj/item/weapon/plastique/seismic/locked, 1500),
|
EQUIPMENT("Explosive Excavation Kit - Plastic Charge",/obj/item/weapon/plastique/seismic/locked, 1500),
|
||||||
EQUIPMENT("Industrial Equipment - Phoron Bore", /obj/item/weapon/gun/magnetic/matfed, 3000),
|
EQUIPMENT("Industrial Equipment - Phoron Bore", /obj/item/weapon/gun/magnetic/matfed/phoronbore/loaded, 3000),
|
||||||
EQUIPMENT("Industrial Equipment - Inducer", /obj/item/weapon/inducer, 900),
|
EQUIPMENT("Industrial Equipment - Inducer", /obj/item/weapon/inducer, 900),
|
||||||
EQUIPMENT("Industrial Equipment - Sheet-Snatcher", /obj/item/weapon/storage/bag/sheetsnatcher, 500),
|
EQUIPMENT("Industrial Equipment - Sheet-Snatcher", /obj/item/weapon/storage/bag/sheetsnatcher, 500),
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -54,7 +54,7 @@
|
|||||||
EQUIPMENT("Cigar", /obj/item/clothing/mask/smokable/cigarette/cigar/havana, 15),
|
EQUIPMENT("Cigar", /obj/item/clothing/mask/smokable/cigarette/cigar/havana, 15),
|
||||||
EQUIPMENT("Digital Tablet - Standard", /obj/item/modular_computer/tablet/preset/custom_loadout/standard, 50),
|
EQUIPMENT("Digital Tablet - Standard", /obj/item/modular_computer/tablet/preset/custom_loadout/standard, 50),
|
||||||
EQUIPMENT("Digital Tablet - Advanced", /obj/item/modular_computer/tablet/preset/custom_loadout/advanced, 100),
|
EQUIPMENT("Digital Tablet - Advanced", /obj/item/modular_computer/tablet/preset/custom_loadout/advanced, 100),
|
||||||
EQUIPMENT("Industrial Equipment - Phoron Bore", /obj/item/weapon/gun/magnetic/matfed, 300),
|
EQUIPMENT("Industrial Equipment - Phoron Bore", /obj/item/weapon/gun/magnetic/matfed/phoronbore/loaded, 300),
|
||||||
EQUIPMENT("Industrial Equipment - Inducer", /obj/item/weapon/inducer, 90),
|
EQUIPMENT("Industrial Equipment - Inducer", /obj/item/weapon/inducer, 90),
|
||||||
EQUIPMENT("Laser Pointer", /obj/item/device/laser_pointer, 90),
|
EQUIPMENT("Laser Pointer", /obj/item/device/laser_pointer, 90),
|
||||||
EQUIPMENT("Luxury Shelter Capsule", /obj/item/device/survivalcapsule/luxury, 310),
|
EQUIPMENT("Luxury Shelter Capsule", /obj/item/device/survivalcapsule/luxury, 310),
|
||||||
|
|||||||
@@ -284,7 +284,7 @@
|
|||||||
var/list/vorestrings = list()
|
var/list/vorestrings = list()
|
||||||
vorestrings += examine_weight()
|
vorestrings += examine_weight()
|
||||||
vorestrings += examine_nutrition()
|
vorestrings += examine_nutrition()
|
||||||
vorestrings += examine_reagent_bellies() //CHOMP reagent bellies
|
// vorestrings += examine_reagent_bellies() //CHOMP reagent bellies
|
||||||
vorestrings += examine_bellies()
|
vorestrings += examine_bellies()
|
||||||
vorestrings += examine_pickup_size()
|
vorestrings += examine_pickup_size()
|
||||||
vorestrings += examine_step_size()
|
vorestrings += examine_step_size()
|
||||||
|
|||||||
@@ -257,12 +257,12 @@
|
|||||||
|
|
||||||
// Play every 20 steps while walking, for the sneak
|
// Play every 20 steps while walking, for the sneak
|
||||||
if(m_intent == "walk" && step_count++ % 20 != 0)
|
if(m_intent == "walk" && step_count++ % 20 != 0)
|
||||||
check_vorefootstep(m_intent, T) //CHOMPstation edit: sloshing reagent belly walk system
|
// check_vorefootstep(m_intent, T) //CHOMPstation edit: sloshing reagent belly walk system
|
||||||
return
|
return
|
||||||
|
|
||||||
// Play every other step while running
|
// Play every other step while running
|
||||||
if(m_intent == "run" && step_count++ % 2 != 0)
|
if(m_intent == "run" && step_count++ % 2 != 0)
|
||||||
check_vorefootstep(m_intent, T) //CHOMPstation edit: sloshing reagent belly walk system
|
// check_vorefootstep(m_intent, T) //CHOMPstation edit: sloshing reagent belly walk system
|
||||||
return
|
return
|
||||||
|
|
||||||
var/volume = config.footstep_volume
|
var/volume = config.footstep_volume
|
||||||
|
|||||||
@@ -591,8 +591,8 @@ datum/species/harpy
|
|||||||
min_age = 18
|
min_age = 18
|
||||||
max_age = 80
|
max_age = 80
|
||||||
|
|
||||||
male_scream_sound = null //CHOMPedit
|
male_scream_sound = list('sound/effects/mob_effects/x_scream1.ogg','sound/effects/mob_effects/x_scream2.ogg','sound/effects/mob_effects/x_scream3.ogg') //CHOMPedit Scree
|
||||||
female_scream_sound = null //CHOMPedit
|
female_scream_sound = list('sound/effects/mob_effects/x_scream1.ogg','sound/effects/mob_effects/x_scream2.ogg','sound/effects/mob_effects/x_scream3.ogg') //CHOMPedit
|
||||||
|
|
||||||
blurb = "Xenomorphs hybrids are a mixture of xenomorph DNA and some other humanoid species. \
|
blurb = "Xenomorphs hybrids are a mixture of xenomorph DNA and some other humanoid species. \
|
||||||
Xenomorph hyrids mostly have had had their natural aggression removed due to the gene modification process \
|
Xenomorph hyrids mostly have had had their natural aggression removed due to the gene modification process \
|
||||||
|
|||||||
@@ -10,8 +10,8 @@
|
|||||||
hud_type = /datum/hud_data/alien
|
hud_type = /datum/hud_data/alien
|
||||||
rarity_value = 3
|
rarity_value = 3
|
||||||
|
|
||||||
male_scream_sound = null //CHOMPedit Note, add xenomorph screams later, shouldn't be hard
|
male_scream_sound = list('sound/effects/mob_effects/x_scream1.ogg','sound/effects/mob_effects/x_scream2.ogg','sound/effects/mob_effects/x_scream3.ogg') //CHOMPedit SCREE
|
||||||
female_scream_sound = null //CHOMPedit
|
female_scream_sound = list('sound/effects/mob_effects/x_scream1.ogg','sound/effects/mob_effects/x_scream2.ogg','sound/effects/mob_effects/x_scream3.ogg') //CHOMPedit SCREE
|
||||||
|
|
||||||
darksight = 10 //CHOMPedit. Added darksight
|
darksight = 10 //CHOMPedit. Added darksight
|
||||||
vision_flags = SEE_SELF|SEE_MOBS|SEE_TURFS //CHOMPedit trying to make xenos see properly
|
vision_flags = SEE_SELF|SEE_MOBS|SEE_TURFS //CHOMPedit trying to make xenos see properly
|
||||||
|
|||||||
@@ -1,27 +1,24 @@
|
|||||||
/obj/item/weapon/gun/magnetic/matfed
|
/obj/item/weapon/gun/magnetic/matfed
|
||||||
name = "portable phoron bore"
|
|
||||||
desc = "A large man-portable tunnel bore, using phorogenic plasma blasts. Point away from user."
|
|
||||||
description_fluff = "An aging Grayson Manufactories mining tool used for rapidly digging through rock. Mass production was discontinued when many of the devices were stolen and used to break into a high security facility by Boiling Point drones."
|
|
||||||
description_antag = "This device is exceptional at breaking down walls, though it is incredibly loud when doing so."
|
|
||||||
description_info = "The projectile of this tool will travel six tiles before dissipating, excavating mineral walls as it does so. It can be reloaded with phoron sheets."
|
|
||||||
|
|
||||||
icon_state = "bore"
|
|
||||||
item_state = "bore"
|
|
||||||
wielded_item_state = "bore-wielded"
|
|
||||||
one_handed_penalty = 5
|
|
||||||
|
|
||||||
projectile_type = /obj/item/projectile/bullet/magnetic/bore
|
|
||||||
|
|
||||||
gun_unreliable = 0
|
|
||||||
|
|
||||||
power_cost = 750
|
power_cost = 750
|
||||||
load_type = /obj/item/stack/material
|
load_type = list(/obj/item/stack/material, /obj/item/weapon/ore)
|
||||||
var/mat_storage = 0 // How much material is stored inside? Input in multiples of 2000 as per auto/protolathe.
|
var/mat_storage = 0 // How much material is stored inside? Input in multiples of 2000 as per auto/protolathe.
|
||||||
var/max_mat_storage = 8000 // How much material can be stored inside?
|
var/max_mat_storage = 8000 // How much material can be stored inside?
|
||||||
var/mat_cost = 500 // How much material is used per-shot?
|
var/mat_cost = 500 // How much material is used per-shot?
|
||||||
var/ammo_material = MAT_PHORON
|
var/ammo_material
|
||||||
|
var/obj/item/weapon/stock_parts/manipulator/manipulator // Installed manipulator. Mostly for Phoron Bore, higher rating == less mats consumed upon firing. Set to a path to spawn with one of that type.
|
||||||
var/loading = FALSE
|
var/loading = FALSE
|
||||||
|
|
||||||
|
/obj/item/weapon/gun/magnetic/matfed/Initialize()
|
||||||
|
. = ..()
|
||||||
|
if(ispath(manipulator))
|
||||||
|
manipulator = new manipulator(src)
|
||||||
|
if(manipulator)
|
||||||
|
mat_cost = initial(mat_cost) / (2*manipulator.rating)
|
||||||
|
|
||||||
|
/obj/item/weapon/gun/magnetic/matfed/Destroy()
|
||||||
|
QDEL_NULL(manipulator)
|
||||||
|
. = ..()
|
||||||
|
|
||||||
/obj/item/weapon/gun/magnetic/matfed/examine(mob/user)
|
/obj/item/weapon/gun/magnetic/matfed/examine(mob/user)
|
||||||
. = ..()
|
. = ..()
|
||||||
var/ammotext = show_ammo()
|
var/ammotext = show_ammo()
|
||||||
@@ -46,6 +43,7 @@
|
|||||||
|
|
||||||
overlays = overlays_to_add
|
overlays = overlays_to_add
|
||||||
..()
|
..()
|
||||||
|
|
||||||
/obj/item/weapon/gun/magnetic/matfed/attack_hand(var/mob/user) // It doesn't keep a loaded item inside.
|
/obj/item/weapon/gun/magnetic/matfed/attack_hand(var/mob/user) // It doesn't keep a loaded item inside.
|
||||||
if(user.get_inactive_hand() == src)
|
if(user.get_inactive_hand() == src)
|
||||||
var/obj/item/removing
|
var/obj/item/removing
|
||||||
@@ -55,7 +53,6 @@
|
|||||||
cell = null
|
cell = null
|
||||||
|
|
||||||
if(removing)
|
if(removing)
|
||||||
removing.forceMove(get_turf(src))
|
|
||||||
user.put_in_hands(removing)
|
user.put_in_hands(removing)
|
||||||
user.visible_message("<span class='notice'>\The [user] removes \the [removing] from \the [src].</span>")
|
user.visible_message("<span class='notice'>\The [user] removes \the [removing] from \the [src].</span>")
|
||||||
playsound(src, 'sound/machines/click.ogg', 10, 1)
|
playsound(src, 'sound/machines/click.ogg', 10, 1)
|
||||||
@@ -77,91 +74,170 @@
|
|||||||
|
|
||||||
/obj/item/weapon/gun/magnetic/matfed/attackby(var/obj/item/thing, var/mob/user)
|
/obj/item/weapon/gun/magnetic/matfed/attackby(var/obj/item/thing, var/mob/user)
|
||||||
if(removable_components)
|
if(removable_components)
|
||||||
if(istype(thing, /obj/item/weapon/cell))
|
|
||||||
if(cell)
|
|
||||||
to_chat(user, "<span class='warning'>\The [src] already has \a [cell] installed.</span>")
|
|
||||||
return
|
|
||||||
cell = thing
|
|
||||||
user.drop_from_inventory(cell)
|
|
||||||
cell.forceMove(src)
|
|
||||||
playsound(src, 'sound/machines/click.ogg', 10, 1)
|
|
||||||
user.visible_message("<span class='notice'>\The [user] slots \the [cell] into \the [src].</span>")
|
|
||||||
update_icon()
|
|
||||||
return
|
|
||||||
if(thing.is_crowbar())
|
if(thing.is_crowbar())
|
||||||
if(!manipulator)
|
if(!manipulator)
|
||||||
to_chat(user, "<span class='warning'>\The [src] has no manipulator installed.</span>")
|
to_chat(user, "<span class='warning'>\The [src] has no manipulator installed.</span>")
|
||||||
return
|
return
|
||||||
manipulator.forceMove(get_turf(src))
|
|
||||||
user.put_in_hands(manipulator)
|
user.put_in_hands(manipulator)
|
||||||
user.visible_message("<span class='notice'>\The [user] levers \the [manipulator] from \the [src].</span>")
|
user.visible_message("<span class='notice'>\The [user] levers \the [manipulator] from \the [src].</span>")
|
||||||
playsound(src, 'sound/items/Crowbar.ogg', 50, 1)
|
playsound(src, thing.usesound, 50, 1)
|
||||||
|
mat_cost = initial(mat_cost)
|
||||||
manipulator = null
|
manipulator = null
|
||||||
update_icon()
|
update_icon()
|
||||||
return
|
return
|
||||||
if(thing.is_screwdriver())
|
|
||||||
if(!capacitor)
|
|
||||||
to_chat(user, "<span class='warning'>\The [src] has no capacitor installed.</span>")
|
|
||||||
return
|
|
||||||
capacitor.forceMove(get_turf(src))
|
|
||||||
user.put_in_hands(capacitor)
|
|
||||||
user.visible_message("<span class='notice'>\The [user] unscrews \the [capacitor] from \the [src].</span>")
|
|
||||||
playsound(src, 'sound/items/Screwdriver.ogg', 50, 1)
|
|
||||||
capacitor = null
|
|
||||||
update_icon()
|
|
||||||
return
|
|
||||||
|
|
||||||
if(istype(thing, /obj/item/weapon/stock_parts/capacitor))
|
|
||||||
if(capacitor)
|
|
||||||
to_chat(user, "<span class='warning'>\The [src] already has \a [capacitor] installed.</span>")
|
|
||||||
return
|
|
||||||
capacitor = thing
|
|
||||||
user.drop_from_inventory(capacitor)
|
|
||||||
capacitor.forceMove(src)
|
|
||||||
playsound(src, 'sound/machines/click.ogg', 10, 1)
|
|
||||||
power_per_tick = (power_cost*0.15) * capacitor.rating
|
|
||||||
user.visible_message("<span class='notice'>\The [user] slots \the [capacitor] into \the [src].</span>")
|
|
||||||
update_icon()
|
|
||||||
return
|
|
||||||
|
|
||||||
if(istype(thing, /obj/item/weapon/stock_parts/manipulator))
|
if(istype(thing, /obj/item/weapon/stock_parts/manipulator))
|
||||||
if(manipulator)
|
if(manipulator)
|
||||||
to_chat(user, "<span class='warning'>\The [src] already has \a [manipulator] installed.</span>")
|
to_chat(user, "<span class='warning'>\The [src] already has \a [manipulator] installed.</span>")
|
||||||
return
|
return
|
||||||
manipulator = thing
|
manipulator = thing
|
||||||
user.drop_from_inventory(manipulator)
|
user.drop_from_inventory(manipulator, src)
|
||||||
manipulator.forceMove(src)
|
|
||||||
playsound(src, 'sound/machines/click.ogg', 10,1)
|
playsound(src, 'sound/machines/click.ogg', 10,1)
|
||||||
mat_cost = initial(mat_cost) % (2*manipulator.rating)
|
mat_cost = initial(mat_cost) / (2*manipulator.rating)
|
||||||
user.visible_message("<span class='notice'>\The [user] slots \the [manipulator] into \the [src].</span>")
|
user.visible_message("<span class='notice'>\The [user] slots \the [manipulator] into \the [src].</span>")
|
||||||
update_icon()
|
update_icon()
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
if(istype(thing, load_type))
|
if(is_type_in_list(thing, load_type))
|
||||||
loading = TRUE
|
|
||||||
var/obj/item/stack/material/M = thing
|
var/obj/item/stack/material/M = thing
|
||||||
|
|
||||||
if(!M.material || M.material.name != ammo_material)
|
if(istype(M)) //stack
|
||||||
return
|
if(!M.material || M.material.name != ammo_material || loading)
|
||||||
|
return
|
||||||
|
|
||||||
if(mat_storage + 2000 > max_mat_storage)
|
if(mat_storage + SHEET_MATERIAL_AMOUNT > max_mat_storage)
|
||||||
to_chat(user, "<span class='warning'>\The [src] cannot hold more [ammo_material].</span>")
|
to_chat(user, "<span class='warning'>\The [src] cannot hold more [ammo_material].</span>")
|
||||||
return
|
return
|
||||||
|
|
||||||
var/can_hold_val = 0
|
var/can_hold_val = 0
|
||||||
while(can_hold_val < M.amount) //CHOMPEdit
|
loading = TRUE
|
||||||
if(mat_storage + 2000 <= max_mat_storage && do_after(user,1.5 SECONDS))
|
while(can_hold_val < M.amount && mat_storage + SHEET_MATERIAL_AMOUNT <= max_mat_storage && do_after(user,1.5 SECONDS)) //CHOMPEdit
|
||||||
can_hold_val ++
|
can_hold_val ++
|
||||||
mat_storage += 2000
|
mat_storage += SHEET_MATERIAL_AMOUNT
|
||||||
playsound(src, 'sound/effects/phasein.ogg', 15, 1)
|
playsound(src, 'sound/effects/phasein.ogg', 15, 1)
|
||||||
else
|
M.use(can_hold_val)
|
||||||
loading = FALSE
|
loading = FALSE
|
||||||
break
|
|
||||||
M.use(can_hold_val)
|
else //ore
|
||||||
|
if(M.material != ammo_material)
|
||||||
|
return
|
||||||
|
|
||||||
|
if(mat_storage + (SHEET_MATERIAL_AMOUNT/2*0.8) > max_mat_storage)
|
||||||
|
to_chat(user, "<span class='warning'>\The [src] cannot hold more [ammo_material].</span>")
|
||||||
|
return
|
||||||
|
|
||||||
|
qdel(M)
|
||||||
|
mat_storage += (SHEET_MATERIAL_AMOUNT/2*0.8) //two plasma ores needed per sheet, some inefficiency for not using refined product
|
||||||
|
|
||||||
|
|
||||||
user.visible_message("<span class='notice'>\The [user] loads \the [src] with \the [M].</span>")
|
user.visible_message("<span class='notice'>\The [user] loads \the [src] with \the [M].</span>")
|
||||||
playsound(src, 'sound/weapons/flipblade.ogg', 50, 1)
|
playsound(src, 'sound/weapons/flipblade.ogg', 50, 1)
|
||||||
update_icon()
|
update_icon()
|
||||||
return
|
return
|
||||||
|
|
||||||
. = ..()
|
. = ..()
|
||||||
|
|
||||||
|
#define GEN_STARTING -1
|
||||||
|
#define GEN_OFF 0
|
||||||
|
#define GEN_IDLE 1
|
||||||
|
#define GEN_ACTIVE 2
|
||||||
|
|
||||||
|
/obj/item/weapon/gun/magnetic/matfed/phoronbore
|
||||||
|
name = "portable phoron bore"
|
||||||
|
desc = "A large man-portable tunnel bore, using phorogenic plasma blasts. Point away from user."
|
||||||
|
description_fluff = "An aging Grayson Manufactories mining tool used for rapidly digging through rock. Mass production was discontinued when many of the devices were stolen and used to break into a high security facility by Boiling Point drones."
|
||||||
|
description_antag = "This device is exceptional at breaking down walls, though it is incredibly loud when doing so."
|
||||||
|
description_info = "The projectile of this tool will travel six tiles before dissipating, excavating mineral walls as it does so. It can be reloaded with phoron sheets or ore, and has a togglable generator that can recharge the power cell using stored phoron."
|
||||||
|
|
||||||
|
icon_state = "bore"
|
||||||
|
item_state = "bore"
|
||||||
|
wielded_item_state = "bore-wielded"
|
||||||
|
one_handed_penalty = 5
|
||||||
|
|
||||||
|
projectile_type = /obj/item/projectile/bullet/magnetic/bore
|
||||||
|
|
||||||
|
gun_unreliable = 0
|
||||||
|
power_cost = 100
|
||||||
|
ammo_material = MAT_PHORON
|
||||||
|
|
||||||
|
action_button_name = "Toggle internal generator"
|
||||||
|
|
||||||
|
var/generator_state = GEN_OFF
|
||||||
|
var/datum/looping_sound/small_motor/soundloop
|
||||||
|
var/time_started //to keep the soundloop from being "stopped" too soon and playing indefinitely
|
||||||
|
|
||||||
|
/obj/item/weapon/gun/magnetic/matfed/phoronbore/Initialize()
|
||||||
|
. = ..()
|
||||||
|
soundloop = new(list(src), 0)
|
||||||
|
|
||||||
|
/obj/item/weapon/gun/magnetic/matfed/phoronbore/Destroy()
|
||||||
|
QDEL_NULL(soundloop)
|
||||||
|
. = ..()
|
||||||
|
|
||||||
|
/obj/item/weapon/gun/magnetic/matfed/phoronbore/ui_action_click()
|
||||||
|
toggle_generator(usr)
|
||||||
|
|
||||||
|
/obj/item/weapon/gun/magnetic/matfed/phoronbore/process()
|
||||||
|
if(generator_state && !mat_storage)
|
||||||
|
audible_message(SPAN_NOTICE("\The [src] goes quiet."),SPAN_NOTICE("A motor noise cuts out."))
|
||||||
|
soundloop.stop()
|
||||||
|
generator_state = GEN_OFF
|
||||||
|
|
||||||
|
else if(generator_state > GEN_OFF)
|
||||||
|
if(generator_state == GEN_IDLE && (cell?.percent() < 80 || (!cell && capacitor && capacitor.charge/capacitor.max_charge < 0.8)))
|
||||||
|
generator_state = GEN_ACTIVE
|
||||||
|
else if(generator_state == GEN_ACTIVE && (!cell || cell.fully_charged()) && (!capacitor || capacitor.charge == capacitor.max_charge))
|
||||||
|
generator_state = GEN_IDLE
|
||||||
|
soundloop.speed = generator_state
|
||||||
|
generator_generate()
|
||||||
|
|
||||||
|
if(capacitor)
|
||||||
|
if(cell)
|
||||||
|
if(capacitor.charge < capacitor.max_charge && cell.checked_use(power_per_tick))
|
||||||
|
capacitor.charge(power_per_tick)
|
||||||
|
else if(!generator_state)
|
||||||
|
capacitor.use(capacitor.charge * 0.05)
|
||||||
|
|
||||||
|
update_state()
|
||||||
|
|
||||||
|
/obj/item/weapon/gun/magnetic/matfed/phoronbore/proc/generator_generate()
|
||||||
|
var/fuel_used = generator_state == GEN_IDLE ? 5 : 25
|
||||||
|
var/power_made = fuel_used * 800 * CELLRATE //20kW when active, same power as a pacman on setting one, but less efficient because compact and portable
|
||||||
|
if(cell)
|
||||||
|
cell.give(power_made)
|
||||||
|
else if(capacitor)
|
||||||
|
capacitor.charge(power_made)
|
||||||
|
mat_storage = max(mat_storage - fuel_used, 0)
|
||||||
|
var/turf/T = get_turf(src)
|
||||||
|
if(T)
|
||||||
|
T.assume_gas("carbon_dioxide", fuel_used * 0.01, T0C+200)
|
||||||
|
|
||||||
|
/obj/item/weapon/gun/magnetic/matfed/phoronbore/proc/toggle_generator(mob/living/user)
|
||||||
|
if(!generator_state && !mat_storage)
|
||||||
|
to_chat(user, SPAN_NOTICE("\The [src] has no fuel!"))
|
||||||
|
return
|
||||||
|
|
||||||
|
else if(!generator_state)
|
||||||
|
generator_state = GEN_STARTING
|
||||||
|
var/pull = (!cell || cell.charge < 100) ? rand(1,4) : 0
|
||||||
|
while(pull)
|
||||||
|
playsound(src, 'sound/items/small_motor/motor_pull_attempt.ogg', 100)
|
||||||
|
if(!do_after(user, 2 SECONDS, src))
|
||||||
|
generator_state = GEN_OFF
|
||||||
|
return
|
||||||
|
pull--
|
||||||
|
soundloop.start()
|
||||||
|
time_started = world.time
|
||||||
|
cell?.use(100)
|
||||||
|
audible_message(SPAN_NOTICE("\The [src] starts chugging."),SPAN_NOTICE("A motor noise starts up."))
|
||||||
|
generator_state = GEN_IDLE
|
||||||
|
|
||||||
|
else if(generator_state > GEN_OFF && time_started + 3 SECONDS < world.time)
|
||||||
|
soundloop.stop()
|
||||||
|
audible_message(SPAN_NOTICE("\The [src] goes quiet."),SPAN_NOTICE("A motor noise cuts out."))
|
||||||
|
generator_state = GEN_OFF
|
||||||
|
|
||||||
|
/obj/item/weapon/gun/magnetic/matfed/phoronbore/loaded
|
||||||
|
cell = /obj/item/weapon/cell/apc
|
||||||
|
capacitor = /obj/item/weapon/stock_parts/capacitor
|
||||||
|
|||||||
@@ -17,7 +17,6 @@
|
|||||||
|
|
||||||
var/obj/item/weapon/cell/cell // Currently installed powercell.
|
var/obj/item/weapon/cell/cell // Currently installed powercell.
|
||||||
var/obj/item/weapon/stock_parts/capacitor/capacitor // Installed capacitor. Higher rating == faster charge between shots. Set to a path to spawn with one of that type.
|
var/obj/item/weapon/stock_parts/capacitor/capacitor // Installed capacitor. Higher rating == faster charge between shots. Set to a path to spawn with one of that type.
|
||||||
var/obj/item/weapon/stock_parts/manipulator/manipulator // Installed manipulator. Mostly for Phoron Bore, higher rating == less mats consumed upon firing. Set to a path to spawn with one of that type.
|
|
||||||
var/removable_components = TRUE // Whether or not the gun can be dismantled.
|
var/removable_components = TRUE // Whether or not the gun can be dismantled.
|
||||||
var/gun_unreliable = 15 // Percentage chance of detonating in your hands.
|
var/gun_unreliable = 15 // Percentage chance of detonating in your hands.
|
||||||
|
|
||||||
@@ -38,16 +37,14 @@
|
|||||||
if(ispath(capacitor))
|
if(ispath(capacitor))
|
||||||
capacitor = new capacitor(src)
|
capacitor = new capacitor(src)
|
||||||
capacitor.charge = capacitor.max_charge
|
capacitor.charge = capacitor.max_charge
|
||||||
if(ispath(manipulator))
|
|
||||||
manipulator = new manipulator(src)
|
|
||||||
if(ispath(loaded))
|
if(ispath(loaded))
|
||||||
loaded = new loaded(src)
|
loaded = new loaded(src)
|
||||||
|
|
||||||
START_PROCESSING(SSobj, src)
|
START_PROCESSING(SSobj, src)
|
||||||
|
|
||||||
if(capacitor)
|
if(capacitor)
|
||||||
power_per_tick = (power_cost*0.15) * capacitor.rating
|
power_per_tick = (power_cost*0.15) * capacitor.rating
|
||||||
|
|
||||||
update_icon()
|
update_icon()
|
||||||
|
|
||||||
/obj/item/weapon/gun/magnetic/Destroy()
|
/obj/item/weapon/gun/magnetic/Destroy()
|
||||||
@@ -55,7 +52,6 @@
|
|||||||
QDEL_NULL(cell)
|
QDEL_NULL(cell)
|
||||||
QDEL_NULL(loaded)
|
QDEL_NULL(loaded)
|
||||||
QDEL_NULL(capacitor)
|
QDEL_NULL(capacitor)
|
||||||
QDEL_NULL(manipulator)
|
|
||||||
. = ..()
|
. = ..()
|
||||||
|
|
||||||
/obj/item/weapon/gun/magnetic/get_cell()
|
/obj/item/weapon/gun/magnetic/get_cell()
|
||||||
@@ -68,7 +64,7 @@
|
|||||||
capacitor.charge(power_per_tick)
|
capacitor.charge(power_per_tick)
|
||||||
else
|
else
|
||||||
capacitor.use(capacitor.charge * 0.05)
|
capacitor.use(capacitor.charge * 0.05)
|
||||||
|
|
||||||
update_state() // May update icon, only if things changed.
|
update_state() // May update icon, only if things changed.
|
||||||
|
|
||||||
/obj/item/weapon/gun/magnetic/proc/update_state()
|
/obj/item/weapon/gun/magnetic/proc/update_state()
|
||||||
@@ -80,7 +76,7 @@
|
|||||||
newstate |= ICON_CELL
|
newstate |= ICON_CELL
|
||||||
if(capacitor)
|
if(capacitor)
|
||||||
newstate |= ICON_CAP
|
newstate |= ICON_CAP
|
||||||
|
|
||||||
// Functional state
|
// Functional state
|
||||||
if(!cell || !capacitor)
|
if(!cell || !capacitor)
|
||||||
newstate |= ICON_BAD
|
newstate |= ICON_BAD
|
||||||
@@ -88,7 +84,7 @@
|
|||||||
newstate |= ICON_CHARGE
|
newstate |= ICON_CHARGE
|
||||||
else
|
else
|
||||||
newstate |= ICON_READY
|
newstate |= ICON_READY
|
||||||
|
|
||||||
// Ammo indicator
|
// Ammo indicator
|
||||||
if(loaded)
|
if(loaded)
|
||||||
newstate |= ICON_LOADED
|
newstate |= ICON_LOADED
|
||||||
@@ -99,7 +95,7 @@
|
|||||||
needs_update = TRUE
|
needs_update = TRUE
|
||||||
|
|
||||||
state = newstate
|
state = newstate
|
||||||
|
|
||||||
if(needs_update)
|
if(needs_update)
|
||||||
update_icon()
|
update_icon()
|
||||||
|
|
||||||
@@ -153,8 +149,7 @@
|
|||||||
to_chat(user, "<span class='warning'>\The [src] already has \a [cell] installed.</span>")
|
to_chat(user, "<span class='warning'>\The [src] already has \a [cell] installed.</span>")
|
||||||
return
|
return
|
||||||
cell = thing
|
cell = thing
|
||||||
user.drop_from_inventory(cell)
|
user.drop_from_inventory(cell, src)
|
||||||
cell.forceMove(src)
|
|
||||||
playsound(src, 'sound/machines/click.ogg', 10, 1)
|
playsound(src, 'sound/machines/click.ogg', 10, 1)
|
||||||
user.visible_message("<span class='notice'>\The [user] slots \the [cell] into \the [src].</span>")
|
user.visible_message("<span class='notice'>\The [user] slots \the [cell] into \the [src].</span>")
|
||||||
update_icon()
|
update_icon()
|
||||||
@@ -164,10 +159,9 @@
|
|||||||
if(!capacitor)
|
if(!capacitor)
|
||||||
to_chat(user, "<span class='warning'>\The [src] has no capacitor installed.</span>")
|
to_chat(user, "<span class='warning'>\The [src] has no capacitor installed.</span>")
|
||||||
return
|
return
|
||||||
capacitor.forceMove(get_turf(src))
|
|
||||||
user.put_in_hands(capacitor)
|
user.put_in_hands(capacitor)
|
||||||
user.visible_message("<span class='notice'>\The [user] unscrews \the [capacitor] from \the [src].</span>")
|
user.visible_message("<span class='notice'>\The [user] unscrews \the [capacitor] from \the [src].</span>")
|
||||||
playsound(src, 'sound/items/Screwdriver.ogg', 50, 1)
|
playsound(src, thing.usesound, 50, 1)
|
||||||
capacitor = null
|
capacitor = null
|
||||||
update_icon()
|
update_icon()
|
||||||
return
|
return
|
||||||
@@ -177,8 +171,7 @@
|
|||||||
to_chat(user, "<span class='warning'>\The [src] already has \a [capacitor] installed.</span>")
|
to_chat(user, "<span class='warning'>\The [src] already has \a [capacitor] installed.</span>")
|
||||||
return
|
return
|
||||||
capacitor = thing
|
capacitor = thing
|
||||||
user.drop_from_inventory(capacitor)
|
user.drop_from_inventory(capacitor, src)
|
||||||
capacitor.forceMove(src)
|
|
||||||
playsound(src, 'sound/machines/click.ogg', 10, 1)
|
playsound(src, 'sound/machines/click.ogg', 10, 1)
|
||||||
power_per_tick = (power_cost*0.15) * capacitor.rating
|
power_per_tick = (power_cost*0.15) * capacitor.rating
|
||||||
user.visible_message("<span class='notice'>\The [user] slots \the [capacitor] into \the [src].</span>")
|
user.visible_message("<span class='notice'>\The [user] slots \the [capacitor] into \the [src].</span>")
|
||||||
|
|||||||
@@ -162,6 +162,9 @@
|
|||||||
irradiate = 20
|
irradiate = 20
|
||||||
range = 6
|
range = 6
|
||||||
|
|
||||||
|
/obj/item/projectile/bullet/magnetic/bore/get_structure_damage()
|
||||||
|
return damage * 3 //made for boring holes
|
||||||
|
|
||||||
/obj/item/projectile/bullet/magnetic/bore/Bump(atom/A, forced=0)
|
/obj/item/projectile/bullet/magnetic/bore/Bump(atom/A, forced=0)
|
||||||
if(istype(A, /turf/simulated/mineral))
|
if(istype(A, /turf/simulated/mineral))
|
||||||
var/turf/simulated/mineral/MI = A
|
var/turf/simulated/mineral/MI = A
|
||||||
@@ -171,7 +174,6 @@
|
|||||||
return 0
|
return 0
|
||||||
else if(istype(A, /turf/simulated/wall) || istype(A, /turf/simulated/shuttle/wall)) // Cause a loud, but relatively minor explosion on the wall it hits.
|
else if(istype(A, /turf/simulated/wall) || istype(A, /turf/simulated/shuttle/wall)) // Cause a loud, but relatively minor explosion on the wall it hits.
|
||||||
explosion(A, -1, -1, 1, 3)
|
explosion(A, -1, -1, 1, 3)
|
||||||
qdel(src)
|
return ..()
|
||||||
return 1
|
|
||||||
else
|
else
|
||||||
..()
|
..()
|
||||||
|
|||||||
@@ -46,7 +46,7 @@
|
|||||||
return TRUE
|
return TRUE
|
||||||
M.vorePanel = new(M)
|
M.vorePanel = new(M)
|
||||||
M.verbs += /mob/living/proc/insidePanel
|
M.verbs += /mob/living/proc/insidePanel
|
||||||
M.verbs += /mob/living/proc/vore_transfer_reagents //CHOMP If mob doesnt have bellies it cant use this verb for anything
|
// M.verbs += /mob/living/proc/vore_transfer_reagents //CHOMP If mob doesnt have bellies it cant use this verb for anything
|
||||||
|
|
||||||
//Tries to load prefs if a client is present otherwise gives freebie stomach
|
//Tries to load prefs if a client is present otherwise gives freebie stomach
|
||||||
spawn(2 SECONDS)
|
spawn(2 SECONDS)
|
||||||
@@ -243,8 +243,8 @@
|
|||||||
|
|
||||||
|
|
||||||
//CHOMP reagent belly
|
//CHOMP reagent belly
|
||||||
P.receive_reagents = src.receive_reagents
|
// P.receive_reagents = src.receive_reagents
|
||||||
P.give_reagents = src.give_reagents
|
// P.give_reagents = src.give_reagents
|
||||||
|
|
||||||
|
|
||||||
var/list/serialized = list()
|
var/list/serialized = list()
|
||||||
@@ -280,8 +280,8 @@
|
|||||||
can_be_drop_pred = P.can_be_drop_pred
|
can_be_drop_pred = P.can_be_drop_pred
|
||||||
|
|
||||||
//CHOMP reagents belly
|
//CHOMP reagents belly
|
||||||
receive_reagents = P.receive_reagents
|
// receive_reagents = P.receive_reagents
|
||||||
give_reagents = P.give_reagents
|
// give_reagents = P.give_reagents
|
||||||
|
|
||||||
if(bellies)
|
if(bellies)
|
||||||
release_vore_contents(silent = TRUE)
|
release_vore_contents(silent = TRUE)
|
||||||
@@ -862,8 +862,8 @@
|
|||||||
dispvoreprefs += "<b>Healbelly permission:</b> [permit_healbelly ? "Allowed" : "Disallowed"]<br>"
|
dispvoreprefs += "<b>Healbelly permission:</b> [permit_healbelly ? "Allowed" : "Disallowed"]<br>"
|
||||||
dispvoreprefs += "<b>Spontaneous vore prey:</b> [can_be_drop_prey ? "Enabled" : "Disabled"]<br>"
|
dispvoreprefs += "<b>Spontaneous vore prey:</b> [can_be_drop_prey ? "Enabled" : "Disabled"]<br>"
|
||||||
dispvoreprefs += "<b>Spontaneous vore pred:</b> [can_be_drop_pred ? "Enabled" : "Disabled"]<br>"
|
dispvoreprefs += "<b>Spontaneous vore pred:</b> [can_be_drop_pred ? "Enabled" : "Disabled"]<br>"
|
||||||
dispvoreprefs += "<b>Receiving liquids:</b> [receive_reagents ? "Enabled" : "Disabled"]<br>" //CHOMPstation edit
|
// dispvoreprefs += "<b>Receiving liquids:</b> [receive_reagents ? "Enabled" : "Disabled"]<br>" //CHOMPstation edit
|
||||||
dispvoreprefs += "<b>Giving liquids:</b> [give_reagents ? "Enabled" : "Disabled"]<br>" //CHOMPstation edit
|
// dispvoreprefs += "<b>Giving liquids:</b> [give_reagents ? "Enabled" : "Disabled"]<br>" //CHOMPstation edit
|
||||||
user << browse("<html><head><title>Vore prefs: [src]</title></head><body><center>[dispvoreprefs]</center></body></html>", "window=[name]mvp;size=200x300;can_resize=0;can_minimize=0")
|
user << browse("<html><head><title>Vore prefs: [src]</title></head><body><center>[dispvoreprefs]</center></body></html>", "window=[name]mvp;size=200x300;can_resize=0;can_minimize=0")
|
||||||
onclose(user, "[name]")
|
onclose(user, "[name]")
|
||||||
return
|
return
|
||||||
|
|||||||
Binary file not shown.
|
Before Width: | Height: | Size: 38 KiB After Width: | Height: | Size: 38 KiB |
BIN
sound/effects/mob_effects/x_scream1.ogg
Normal file
BIN
sound/effects/mob_effects/x_scream1.ogg
Normal file
Binary file not shown.
BIN
sound/effects/mob_effects/x_scream2.ogg
Normal file
BIN
sound/effects/mob_effects/x_scream2.ogg
Normal file
Binary file not shown.
BIN
sound/effects/mob_effects/x_scream3.ogg
Normal file
BIN
sound/effects/mob_effects/x_scream3.ogg
Normal file
Binary file not shown.
BIN
sound/items/small_motor/motor_end.ogg
Normal file
BIN
sound/items/small_motor/motor_end.ogg
Normal file
Binary file not shown.
BIN
sound/items/small_motor/motor_fast.ogg
Normal file
BIN
sound/items/small_motor/motor_fast.ogg
Normal file
Binary file not shown.
BIN
sound/items/small_motor/motor_faster.ogg
Normal file
BIN
sound/items/small_motor/motor_faster.ogg
Normal file
Binary file not shown.
BIN
sound/items/small_motor/motor_idle.ogg
Normal file
BIN
sound/items/small_motor/motor_idle.ogg
Normal file
Binary file not shown.
BIN
sound/items/small_motor/motor_pull_attempt.ogg
Normal file
BIN
sound/items/small_motor/motor_pull_attempt.ogg
Normal file
Binary file not shown.
BIN
sound/items/small_motor/motor_start_nopull.ogg
Normal file
BIN
sound/items/small_motor/motor_start_nopull.ogg
Normal file
Binary file not shown.
BIN
sound/items/small_motor/motor_start_pull.ogg
Normal file
BIN
sound/items/small_motor/motor_start_pull.ogg
Normal file
Binary file not shown.
@@ -159,7 +159,6 @@
|
|||||||
#include "code\_onclick\drag_drop.dm"
|
#include "code\_onclick\drag_drop.dm"
|
||||||
#include "code\_onclick\item_attack.dm"
|
#include "code\_onclick\item_attack.dm"
|
||||||
#include "code\_onclick\observer.dm"
|
#include "code\_onclick\observer.dm"
|
||||||
#include "code\_onclick\observer_vr.dm"
|
|
||||||
#include "code\_onclick\other_mobs.dm"
|
#include "code\_onclick\other_mobs.dm"
|
||||||
#include "code\_onclick\rig.dm"
|
#include "code\_onclick\rig.dm"
|
||||||
#include "code\_onclick\telekinesis.dm"
|
#include "code\_onclick\telekinesis.dm"
|
||||||
@@ -2616,7 +2615,6 @@
|
|||||||
#include "code\modules\mob\living\inventory.dm"
|
#include "code\modules\mob\living\inventory.dm"
|
||||||
#include "code\modules\mob\living\life.dm"
|
#include "code\modules\mob\living\life.dm"
|
||||||
#include "code\modules\mob\living\living.dm"
|
#include "code\modules\mob\living\living.dm"
|
||||||
#include "code\modules\mob\living\living_ch.dm"
|
|
||||||
#include "code\modules\mob\living\living_defense.dm"
|
#include "code\modules\mob\living\living_defense.dm"
|
||||||
#include "code\modules\mob\living\living_defines.dm"
|
#include "code\modules\mob\living\living_defines.dm"
|
||||||
#include "code\modules\mob\living\living_defines_vr.dm"
|
#include "code\modules\mob\living\living_defines_vr.dm"
|
||||||
@@ -2695,7 +2693,6 @@
|
|||||||
#include "code\modules\mob\living\carbon\human\human_helpers.dm"
|
#include "code\modules\mob\living\carbon\human\human_helpers.dm"
|
||||||
#include "code\modules\mob\living\carbon\human\human_helpers_vr.dm"
|
#include "code\modules\mob\living\carbon\human\human_helpers_vr.dm"
|
||||||
#include "code\modules\mob\living\carbon\human\human_movement.dm"
|
#include "code\modules\mob\living\carbon\human\human_movement.dm"
|
||||||
#include "code\modules\mob\living\carbon\human\human_movement_ch.dm"
|
|
||||||
#include "code\modules\mob\living\carbon\human\human_organs.dm"
|
#include "code\modules\mob\living\carbon\human\human_organs.dm"
|
||||||
#include "code\modules\mob\living\carbon\human\human_powers.dm"
|
#include "code\modules\mob\living\carbon\human\human_powers.dm"
|
||||||
#include "code\modules\mob\living\carbon\human\human_powers_vr.dm"
|
#include "code\modules\mob\living\carbon\human\human_powers_vr.dm"
|
||||||
@@ -3885,7 +3882,6 @@
|
|||||||
#include "code\modules\vore\eating\contaminate_vr.dm"
|
#include "code\modules\vore\eating\contaminate_vr.dm"
|
||||||
#include "code\modules\vore\eating\digest_act_vr.dm"
|
#include "code\modules\vore\eating\digest_act_vr.dm"
|
||||||
#include "code\modules\vore\eating\leave_remains_vr.dm"
|
#include "code\modules\vore\eating\leave_remains_vr.dm"
|
||||||
#include "code\modules\vore\eating\living_ch.dm"
|
|
||||||
#include "code\modules\vore\eating\living_vr.dm"
|
#include "code\modules\vore\eating\living_vr.dm"
|
||||||
#include "code\modules\vore\eating\silicon_vr.dm"
|
#include "code\modules\vore\eating\silicon_vr.dm"
|
||||||
#include "code\modules\vore\eating\simple_animal_vr.dm"
|
#include "code\modules\vore\eating\simple_animal_vr.dm"
|
||||||
|
|||||||
Reference in New Issue
Block a user