Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

RnD MODsuit and new modules #111

Closed
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions code/__DEFINES/~ff_defines/tff_company.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
#define LAPLAS_ANOMALISTIC_NAME "Laplas anomalistic"
#define CARGO_LAPLAS_ANOMALISTIC (1<<10)
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
/datum/design/mod_plating/rnd
name = "RND MOD suit plating"
desc = "A special RND design MOD suit, by Laplas anomalistic."
id = "rnd_mod_plating"
materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 4, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 4, /datum/material/silver = SHEET_MATERIAL_AMOUNT * 4, /datum/material/bluespace = SHEET_MATERIAL_AMOUNT * 2)
build_path = /obj/item/mod/construction/plating/rnd
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE

/datum/design/module/mod_part_replacer
name = "MOD part replacer module"
id = "rnd_module_part_replacer"
materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 2, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 2, /datum/material/silver = SHEET_MATERIAL_AMOUNT * 1)
build_path = /obj/item/mod/module/itemgive/part_replacer
category = list(
RND_CATEGORY_MODSUIT_MODULES + RND_SUBCATEGORY_MODSUIT_MODULES_SCIENCE
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE

/datum/design/module/mod_experiscaner
name = "MOD research scaner module"
id = "rnd_module_eperiscaner"
materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 4, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 4)
build_path = /obj/item/mod/module/itemgive/experiscanner
category = list(
RND_CATEGORY_MODSUIT_MODULES + RND_SUBCATEGORY_MODSUIT_MODULES_SCIENCE
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE

/datum/design/module/mod_toolarm
name = "MOD tool arms modules"
id = "mod_toolarms_module"
materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 4, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 4, /datum/material/silver = SHEET_MATERIAL_AMOUNT * 2, /datum/material/uranium = SHEET_MATERIAL_AMOUNT * 2)
build_path = /obj/item/mod/module/itemgive/tool_arms
category = list(
RND_CATEGORY_MODSUIT_MODULES + RND_SUBCATEGORY_MODSUIT_MODULES_ENGINEERING
)
departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING

/datum/design/module/mod_rpd
name = "MOD RPD module"
id = "mod_rpd_module"
materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 10, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 10)
build_path = /obj/item/mod/module/itemgive/rpd
category = list(
RND_CATEGORY_MODSUIT_MODULES + RND_SUBCATEGORY_MODSUIT_MODULES_ENGINEERING
)
departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING

/datum/design/module/mod_module_shock_protect
name = "MOD shock protection module"
id = "mod_shock_protection_module"
materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 2, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 1, /datum/material/uranium = SMALL_MATERIAL_AMOUNT * 5, /datum/material/silver = SMALL_MATERIAL_AMOUNT * 5)
build_path = /obj/item/mod/module/energy_effective
category = list(
RND_CATEGORY_MODSUIT_MODULES + RND_SUBCATEGORY_MODSUIT_MODULES_GENERAL
)

/datum/design/module/mod_energy_effective
name = "MOD energy effective module"
id = "mod_energy_eff_module"
materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 2, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 1, /datum/material/uranium = SMALL_MATERIAL_AMOUNT * 5)
build_path = /obj/item/mod/module/energy_effective
category = list(
RND_CATEGORY_MODSUIT_MODULES + RND_SUBCATEGORY_MODSUIT_MODULES_GENERAL
)

/datum/design/module/mod_speed_effective
name = "MOD speed effective module"
id = "mod_speed_eff_module"
materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 2, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 1, /datum/material/diamond = SMALL_MATERIAL_AMOUNT * 5)
build_path = /obj/item/mod/module/movemenet_effective
category = list(
RND_CATEGORY_MODSUIT_MODULES + RND_SUBCATEGORY_MODSUIT_MODULES_GENERAL
)

/datum/design/module/mod_cc_effective
name = "MOD complexity effective module"
id = "mod_cc_eff_module"
materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 2, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 1, /datum/material/diamond = SMALL_MATERIAL_AMOUNT * 3)
build_path = /obj/item/mod/module/complexity_effective
category = list(
RND_CATEGORY_MODSUIT_MODULES + RND_SUBCATEGORY_MODSUIT_MODULES_GENERAL
)

/datum/design/module/sprinter
name = "MOD sprinter module"
id = "mod_sprinter_module"
materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 1, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 1, /datum/material/uranium = SMALL_MATERIAL_AMOUNT * 4, /datum/material/silver = SMALL_MATERIAL_AMOUNT * 4)
build_path = /obj/item/mod/module/sprinter
category = list(
RND_CATEGORY_MODSUIT_MODULES + RND_SUBCATEGORY_MODSUIT_MODULES_GENERAL
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
/datum/techweb_node/mod_rnd
id = "mod_rnd"
display_name = "MOD research and develop modular suits"
description = "RND modules and suits, provadet by Laplas anomalistic corporation."
prereq_ids = list("bluespace_travel", "mod_advanced", "adv_engi")
design_ids = list(
"rnd_mod_plating",
"rnd_module_part_replacer",
"rnd_module_eperiscaner",
)
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 4500)
discount_experiments = list(
/datum/experiment/ordnance/gaseous/bz = 3000,
)

/datum/techweb_node/advanced_mod_utility_modules
id = "advanced_mod_utility_modules"
display_name = "MOD advanced utility modules"
description = "Advanced utility modules for MOD suits. Designed by Laplas anomalistic and nanotransen."
prereq_ids = list("mod_advanced", "adv_engi")
design_ids = list(
"mod_toolarms_module",
"mod_shock_protection_module",
"mod_rpd_module",
)
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 5000)

/datum/techweb_node/utility_effection_mod_module
id = "effective_mod_utility_modules"
display_name = "MOD part effective modules"
description = "Utility modules, what can upgrade MOD part effective."
prereq_ids = list("mod_advanced")
design_ids = list(
"mod_energy_eff_module",
"mod_speed_eff_module",
"mod_cc_eff_module",
"mod_sprinter_module",
)
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 5000)
discount_experiments = list(
/datum/experiment/ordnance/gaseous/bz = 4000,
)
Binary file not shown.
Binary file not shown.
Binary file modified tff_modular/master_files/icons/mob/clothing/species/teshari/back.dmi
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file added tff_modular/master_files/icons/obj/mod.dmi
Binary file not shown.
Binary file not shown.
Binary file added tff_modular/master_files/sounds/energy_emit.ogg
Binary file not shown.
Binary file not shown.
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
/datum/armament_entry/company_import/laplas_anomalistic
category = LAPLAS_ANOMALISTIC_NAME
company_bitflag = CARGO_LAPLAS_ANOMALISTIC

/datum/armament_entry/company_import/laplas_anomalistic/modsuits
subcategory = "MOD desings"

/datum/armament_entry/company_import/laplas_anomalistic/modsuits/energy_spear
item_type = /obj/item/mod/module/energy_spear
cost = PAYCHECK_COMMAND * 8

/datum/armament_entry/company_import/laplas_anomalistic/modsuits/mod_blade
item_type = /obj/item/mod/module/itemgive/mod_blade
cost = PAYCHECK_COMMAND * 10
24 changes: 24 additions & 0 deletions tff_modular/modules/tff_modsuits/modsuits/mod_control.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
/obj/item/mod/construction/plating/rnd
icon = 'tff_modular/master_files/icons/obj/mod.dmi'
theme = /datum/mod_theme/rnd

/obj/item/mod/control/rnd
worn_icon = 'tff_modular/master_files/icons/mob/clothing/modsuits/tff_mod.dmi'
icon = 'tff_modular/master_files/icons/obj/clothing/modsuits/mod_clothing.dmi'
icon_state = "rnd-control"
theme = /datum/mod_theme/rnd

/obj/item/mod/control/pre_equipped/rnd
worn_icon = 'tff_modular/master_files/icons/mob/clothing/modsuits/tff_mod.dmi'
icon = 'tff_modular/master_files/icons/obj/clothing/modsuits/mod_clothing.dmi'
icon_state = "rnd-control"
theme = /datum/mod_theme/rnd
starting_frequency = MODLINK_FREQ_NANOTRASEN
applied_cell = /obj/item/stock_parts/cell/hyper
applied_modules = list(
/obj/item/mod/module/dna_lock,
/obj/item/mod/module/emp_shield,
/obj/item/mod/module/flashlight,
/obj/item/mod/module/storage/bluespace,
/obj/item/mod/module/tether,
)
86 changes: 86 additions & 0 deletions tff_modular/modules/tff_modsuits/modsuits/mod_themes.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
/datum/mod_theme/rnd
name = "scientist"
desc = "An scientist-fit suit with heat, shock, fire and explosive resistance. Laplas anomalistic desing."
default_skin = "rnd"
armor_type = /datum/armor/mod_theme_rnd
inbuilt_modules = list(/obj/item/mod/module/rig_module, /obj/item/mod/module/core_rnd)
resistance_flags = FIRE_PROOF
max_heat_protection_temperature = FIRE_SUIT_MAX_TEMP_PROTECT
atom_flags = PREVENT_CONTENTS_EXPLOSION_1
siemens_coefficient = 0
slowdown_inactive = 1
slowdown_active = 0.7
complexity_max = 15
ui_theme = "hackerman"
allowed_suit_storage = list(
/obj/item/construction/rcd,
/obj/item/pipe_dispenser,
/obj/item/analyzer,
)
skins = list(
"rnd" = list(
MOD_ICON_OVERRIDE = 'tff_modular/master_files/icons/obj/clothing/modsuits/mod_clothing.dmi',
MOD_WORN_ICON_OVERRIDE = 'tff_modular/master_files/icons/mob/clothing/modsuits/tff_mod.dmi',
HELMET_FLAGS = list(
UNSEALED_LAYER = NECK_LAYER,
UNSEALED_CLOTHING = SNUG_FIT,
SEALED_CLOTHING = THICKMATERIAL|STOPSPRESSUREDAMAGE|HEADINTERNALS,
UNSEALED_INVISIBILITY = HIDEFACIALHAIR,
SEALED_INVISIBILITY = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDESNOUT,
SEALED_COVER = HEADCOVERSMOUTH|HEADCOVERSEYES|PEPPERPROOF,
),
CHESTPLATE_FLAGS = list(
UNSEALED_CLOTHING = THICKMATERIAL,
SEALED_CLOTHING = STOPSPRESSUREDAMAGE,
SEALED_INVISIBILITY = HIDEJUMPSUIT,
),
GAUNTLETS_FLAGS = list(
UNSEALED_CLOTHING = THICKMATERIAL,
SEALED_CLOTHING = STOPSPRESSUREDAMAGE,
CAN_OVERSLOT = TRUE,
),
BOOTS_FLAGS = list(
UNSEALED_CLOTHING = THICKMATERIAL,
SEALED_CLOTHING = STOPSPRESSUREDAMAGE,
CAN_OVERSLOT = TRUE,
),
),
"robotic" = list(
MOD_ICON_OVERRIDE = 'tff_modular/master_files/icons/obj/clothing/modsuits/mod_clothing.dmi',
MOD_WORN_ICON_OVERRIDE = 'tff_modular/master_files/icons/mob/clothing/modsuits/tff_mod.dmi',
HELMET_FLAGS = list(
UNSEALED_LAYER = NECK_LAYER,
UNSEALED_CLOTHING = SNUG_FIT,
SEALED_CLOTHING = THICKMATERIAL|STOPSPRESSUREDAMAGE|HEADINTERNALS,
UNSEALED_INVISIBILITY = HIDEFACIALHAIR,
SEALED_INVISIBILITY = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDESNOUT,
SEALED_COVER = HEADCOVERSMOUTH|HEADCOVERSEYES|PEPPERPROOF,
),
CHESTPLATE_FLAGS = list(
UNSEALED_CLOTHING = THICKMATERIAL,
SEALED_CLOTHING = STOPSPRESSUREDAMAGE,
SEALED_INVISIBILITY = HIDEJUMPSUIT,
),
GAUNTLETS_FLAGS = list(
UNSEALED_CLOTHING = THICKMATERIAL,
SEALED_CLOTHING = STOPSPRESSUREDAMAGE,
CAN_OVERSLOT = TRUE,
),
BOOTS_FLAGS = list(
UNSEALED_CLOTHING = THICKMATERIAL,
SEALED_CLOTHING = STOPSPRESSUREDAMAGE,
CAN_OVERSLOT = TRUE,
),
),
)

/datum/armor/mod_theme_rnd
melee = 5
bullet = 5
laser = 5
energy = 5
bomb = 100
bio = 100
fire = 100
acid = 100
wound = 10
93 changes: 93 additions & 0 deletions tff_modular/modules/tff_modsuits/modules/_module_giver.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
/obj/item/mod/module/itemgive
module_type = MODULE_USABLE
use_power_cost = DEFAULT_CHARGE_DRAIN * 2
cooldown_time = 1 SECONDS

icon = 'tff_modular/master_files/icons/obj/clothing/modsuits/mod_modules.dmi'
overlay_icon_file = 'tff_modular/master_files/icons/mob/clothing/modsuits/mod_modules.dmi'
var/list/items_to_give = list()
var/obj/item/selected_item

/obj/item/mod/module/itemgive/Initialize(mapload)
. = ..()
for(var/typepath in items_to_give)
if(!ispath(typepath))
continue
var/atom/item_to_create = new typepath(src)
items_to_give += WEAKREF(item_to_create)
items_to_give -= typepath

/obj/item/mod/module/itemgive/Destroy()
. = ..()
if(selected_item)
detach(selected_item)
for(var/datum/weakref/ref in items_to_give)
var/obj/item/to_del = ref.resolve()
if(!to_del)
continue
qdel(to_del)
items_to_give.Cut()

/obj/item/mod/module/itemgive/on_use()
. = ..()
if(selected_item)
if(detach(selected_item))
return
var/list/opinions = list()
var/obj/item/pick
if(items_to_give.len > 1)
for(var/datum/weakref/tool_ref as anything in items_to_give)
var/obj/item/tool_to_add = tool_ref.resolve()
if(!tool_to_add)
continue
opinions[tool_to_add] = image(tool_to_add)
if(!opinions)
return
pick = show_radial_menu(mod.wearer, mod.wearer, opinions)
if(!pick)
return
else if(items_to_give.len)
var/datum/weakref/ref = items_to_give[1]
pick = ref.resolve()

extend(pick)
mod.subtract_charge(DEFAULT_CHARGE_DRAIN)

/obj/item/mod/module/itemgive/on_suit_deactivation(deleting)
. = ..()
if(selected_item)
detach(selected_item)

/obj/item/mod/module/itemgive/proc/extend(obj/item/extend_tool)
if(!istype(extend_tool))
return FALSE
//Проверим ли, можем мы выдать предмет.
if(!mod.wearer.put_in_hands(extend_tool))
mod.wearer.balloon_alert(mod.wearer, "Hands occuped!")
mod.wearer.transferItemToLoc(extend_tool, src, force = TRUE)
return FALSE
ADD_TRAIT(extend_tool, TRAIT_NODROP, REF(src))
RegisterSignal(mod.wearer, COMSIG_KB_MOB_DROPITEM_DOWN, PROC_REF(on_drop))
selected_item = extend_tool
extend_tool.resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF
extend_tool.slot_flags = null
extend_tool.set_custom_materials(null)
mod.wearer.visible_message(span_notice("[mod.wearer] use [mod.name] mechanical [extend_tool]."), span_notice("You extend [mod.name], [extend_tool], in you hand."), span_hear("You hear energy hiss."))
mod.wearer.balloon_alert(mod.wearer, "Tool extendet!")
playsound(get_turf(mod.wearer), 'tff_modular/master_files/sounds/energy_emit.ogg', 40)
return TRUE

/obj/item/mod/module/itemgive/proc/detach(obj/item/detach_tool)
if(!istype(detach_tool))
return FALSE
UnregisterSignal(mod.wearer, COMSIG_KB_MOB_DROPITEM_DOWN)
selected_item.forceMove(src)
selected_item = null
playsound(get_turf(mod.wearer), 'tff_modular/master_files/sounds/energy_emit.ogg', 40)
mod.wearer.balloon_alert(mod.wearer, "Tool detached!")
return TRUE

/obj/item/mod/module/itemgive/proc/on_drop()
if(!selected_item)
return
detach(selected_item)
Loading
Loading