Add's the Hermes mech to robotics. (#5959)

This commit is contained in:
Dwago
2019-02-03 05:30:56 -08:00
committed by Werner
parent 3e97507fe2
commit ab0b1ee6f7
13 changed files with 431 additions and 10 deletions

View File

@@ -682,6 +682,7 @@
#include "code\game\mecha\equipment\weapons\weapons.dm" #include "code\game\mecha\equipment\weapons\weapons.dm"
#include "code\game\mecha\medical\medical.dm" #include "code\game\mecha\medical\medical.dm"
#include "code\game\mecha\medical\odysseus.dm" #include "code\game\mecha\medical\odysseus.dm"
#include "code\game\mecha\working\hermes.dm"
#include "code\game\mecha\working\hoverpod.dm" #include "code\game\mecha\working\hoverpod.dm"
#include "code\game\mecha\working\ripley.dm" #include "code\game\mecha\working\ripley.dm"
#include "code\game\mecha\working\working.dm" #include "code\game\mecha\working\working.dm"

View File

@@ -94,7 +94,7 @@
const_holder.icon_state = "ripley0" const_holder.icon_state = "ripley0"
const_holder.density = 1 const_holder.density = 1
const_holder.cut_overlays() const_holder.cut_overlays()
qdel(src) QDEL_IN(src, 0)
/datum/construction/reversible/mecha/ripley /datum/construction/reversible/mecha/ripley
result = "/obj/mecha/working/ripley" result = "/obj/mecha/working/ripley"
@@ -301,8 +301,7 @@
const_holder.icon = 'icons/mecha/mech_construction.dmi' const_holder.icon = 'icons/mecha/mech_construction.dmi'
const_holder.icon_state = "gygax0" const_holder.icon_state = "gygax0"
const_holder.density = 1 const_holder.density = 1
spawn() QDEL_IN(src, 0)
qdel(src)
return return
@@ -582,8 +581,7 @@
const_holder.icon = 'icons/mecha/mech_construction.dmi' const_holder.icon = 'icons/mecha/mech_construction.dmi'
const_holder.icon_state = "fireripley0" const_holder.icon_state = "fireripley0"
const_holder.density = 1 const_holder.density = 1
spawn() QDEL_IN(src, 0)
qdel(src)
return return
@@ -805,8 +803,7 @@
const_holder.icon = 'icons/mecha/mech_construction.dmi' const_holder.icon = 'icons/mecha/mech_construction.dmi'
const_holder.icon_state = "durand0" const_holder.icon_state = "durand0"
const_holder.density = 1 const_holder.density = 1
spawn() QDEL_IN(src, 0)
qdel(src)
return return
/datum/construction/reversible/mecha/durand /datum/construction/reversible/mecha/durand
@@ -1409,8 +1406,7 @@
const_holder.icon = 'icons/mecha/mech_construction.dmi' const_holder.icon = 'icons/mecha/mech_construction.dmi'
const_holder.icon_state = "odysseus0" const_holder.icon_state = "odysseus0"
const_holder.density = 1 const_holder.density = 1
spawn() QDEL_IN(src, 0)
qdel(src)
return return
@@ -1594,3 +1590,215 @@
..() ..()
feedback_inc("mecha_odysseus_created",1) feedback_inc("mecha_odysseus_created",1)
return return
/////// Hermes
/datum/construction/mecha/hermes_chassis
steps = list(list("key"=/obj/item/mecha_parts/part/hermes_torso),//1
list("key"=/obj/item/mecha_parts/part/hermes_head),//2
list("key"=/obj/item/mecha_parts/part/hermes_left_arm),//3
list("key"=/obj/item/mecha_parts/part/hermes_right_arm),//4
list("key"=/obj/item/mecha_parts/part/hermes_left_leg),//5
list("key"=/obj/item/mecha_parts/part/hermes_right_leg)//6
)
custom_action(step, atom/used_atom, mob/user)
user.visible_message("[user] has connected [used_atom] to [holder].", "You connect [used_atom] to [holder]")
holder.add_overlay("[used_atom.icon_state]+o")
qdel(used_atom)
return 1
action(atom/used_atom,mob/user as mob)
return check_all_steps(used_atom,user)
spawn_result()
var/obj/item/mecha_parts/chassis/const_holder = holder
const_holder.construct = new /datum/construction/reversible/mecha/hermes(const_holder)
const_holder.icon = 'icons/mecha/mech_construction.dmi'
const_holder.icon_state = "hermes0"
const_holder.density = 1
QDEL_IN(src, 0)
return
/datum/construction/reversible/mecha/hermes
result = "/obj/mecha/working/hermes"
steps = list(
//1
list("key"=/obj/item/weapon/weldingtool,
"backkey"=/obj/item/weapon/wrench,
"desc"="External armor is wrenched."),
//2
list("key"=/obj/item/weapon/wrench,
"backkey"=/obj/item/weapon/crowbar,
"desc"="External armor is installed."),
//3
list("key"=/obj/item/stack/material/plasteel,
"backkey"=/obj/item/weapon/weldingtool,
"desc"="Internal armor is welded."),
//4
list("key"=/obj/item/weapon/weldingtool,
"backkey"=/obj/item/weapon/wrench,
"desc"="Internal armor is wrenched"),
//5
list("key"=/obj/item/weapon/wrench,
"backkey"=/obj/item/weapon/crowbar,
"desc"="Internal armor is installed"),
//6
list("key"=/obj/item/stack/material/steel,
"backkey"=/obj/item/weapon/screwdriver,
"desc"="Peripherals control module is secured"),
//7
list("key"=/obj/item/weapon/screwdriver,
"backkey"=/obj/item/weapon/crowbar,
"desc"="Peripherals control module is installed"),
//8
list("key"=/obj/item/weapon/circuitboard/mecha/hermes/peripherals,
"backkey"=/obj/item/weapon/screwdriver,
"desc"="Central control module is secured"),
//9
list("key"=/obj/item/weapon/screwdriver,
"backkey"=/obj/item/weapon/crowbar,
"desc"="Central control module is installed"),
//10
list("key"=/obj/item/weapon/circuitboard/mecha/hermes/main,
"backkey"=/obj/item/weapon/screwdriver,
"desc"="The wiring is adjusted"),
//11
list("key"=/obj/item/weapon/wirecutters,
"backkey"=/obj/item/weapon/screwdriver,
"desc"="The wiring is added"),
//12
list("key"=/obj/item/stack/cable_coil,
"backkey"=/obj/item/weapon/screwdriver,
"desc"="The hydraulic systems are active."),
//13
list("key"=/obj/item/weapon/screwdriver,
"backkey"=/obj/item/weapon/wrench,
"desc"="The hydraulic systems are connected."),
//14
list("key"=/obj/item/weapon/wrench,
"desc"="The hydraulic systems are disconnected.")
)
/datum/construction/reversible/mecha/hermes/action(atom/used_atom,mob/user as mob)
return check_step(used_atom,user)
/datum/construction/reversible/mecha/hermes/custom_action(index, diff, atom/used_atom, mob/user)
if(!..())
return 0
//TODO: better messages.
switch(index)
if(14)
user.visible_message("[user] connects [holder] hydraulic systems", "You connect [holder] hydraulic systems.")
holder.icon_state = "hermes1"
if(13)
if(diff==FORWARD)
user.visible_message("[user] activates [holder] hydraulic systems.", "You activate [holder] hydraulic systems.")
holder.icon_state = "hermes2"
else
user.visible_message("[user] disconnects [holder] hydraulic systems", "You disconnect [holder] hydraulic systems.")
holder.icon_state = "hermes0"
if(12)
if(diff==FORWARD)
user.visible_message("[user] adds the wiring to [holder].", "You add the wiring to [holder].")
holder.icon_state = "hermes3"
else
user.visible_message("[user] deactivates [holder] hydraulic systems.", "You deactivate [holder] hydraulic systems.")
holder.icon_state = "hermes1"
if(11)
if(diff==FORWARD)
user.visible_message("[user] adjusts the wiring of [holder].", "You adjust the wiring of [holder].")
holder.icon_state = "hermes4"
else
user.visible_message("[user] removes the wiring from [holder].", "You remove the wiring from [holder].")
var/obj/item/stack/cable_coil/coil = new /obj/item/stack/cable_coil(get_turf(holder))
coil.amount = 4
holder.icon_state = "hermes2"
if(10)
if(diff==FORWARD)
user.visible_message("[user] installs the central control module into [holder].", "You install the central computer mainboard into [holder].")
qdel(used_atom)
holder.icon_state = "hermes5"
else
user.visible_message("[user] disconnects the wiring of [holder].", "You disconnect the wiring of [holder].")
holder.icon_state = "hermes3"
if(9)
if(diff==FORWARD)
user.visible_message("[user] secures the mainboard.", "You secure the mainboard.")
holder.icon_state = "hermes6"
else
user.visible_message("[user] removes the central control module from [holder].", "You remove the central computer mainboard from [holder].")
new /obj/item/weapon/circuitboard/mecha/hermes/main(get_turf(holder))
holder.icon_state = "hermes4"
if(8)
if(diff==FORWARD)
user.visible_message("[user] installs the peripherals control module into [holder].", "You install the peripherals control module into [holder].")
qdel(used_atom)
holder.icon_state = "hermes7"
else
user.visible_message("[user] unfastens the mainboard.", "You unfasten the mainboard.")
holder.icon_state = "hermes5"
if(7)
if(diff==FORWARD)
user.visible_message("[user] secures the peripherals control module.", "You secure the peripherals control module.")
holder.icon_state = "hermes8"
else
user.visible_message("[user] removes the peripherals control module from [holder].", "You remove the peripherals control module from [holder].")
new /obj/item/weapon/circuitboard/mecha/hermes/peripherals(get_turf(holder))
holder.icon_state = "hermes6"
if(6)
if(diff==FORWARD)
user.visible_message("[user] installs internal armor layer to [holder].", "You install internal armor layer to [holder].")
holder.icon_state = "hermes9"
else
user.visible_message("[user] unfastens the peripherals control module.", "You unfasten the peripherals control module.")
holder.icon_state = "hermes7"
if(5)
if(diff==FORWARD)
user.visible_message("[user] secures internal armor layer.", "You secure internal armor layer.")
holder.icon_state = "hermes10"
else
user.visible_message("[user] pries internal armor layer from [holder].", "You prie internal armor layer from [holder].")
var/obj/item/stack/material/steel/MS = new /obj/item/stack/material/steel(get_turf(holder))
MS.amount = 5
holder.icon_state = "hermes8"
if(4)
if(diff==FORWARD)
user.visible_message("[user] welds internal armor layer to [holder].", "You weld the internal armor layer to [holder].")
holder.icon_state = "hermes11"
else
user.visible_message("[user] unfastens the internal armor layer.", "You unfasten the internal armor layer.")
holder.icon_state = "hermes9"
if(3)
if(diff==FORWARD)
user.visible_message("[user] installs [used_atom] layer to [holder].", "You install external reinforced armor layer to [holder].")
holder.icon_state = "hermes12"
else
user.visible_message("[user] cuts internal armor layer from [holder].", "You cut the internal armor layer from [holder].")
holder.icon_state = "hermes10"
if(2)
if(diff==FORWARD)
user.visible_message("[user] secures external armor layer.", "You secure external reinforced armor layer.")
holder.icon_state = "hermes13"
else
var/obj/item/stack/material/plasteel/MS = new /obj/item/stack/material/plasteel(get_turf(holder))
MS.amount = 5
user.visible_message("[user] pries [MS] from [holder].", "You prie [MS] from [holder].")
holder.icon_state = "hermes11"
if(1)
if(diff==FORWARD)
user.visible_message("[user] welds external armor layer to [holder].", "You weld external armor layer to [holder].")
holder.icon_state = "hermes14"
else
user.visible_message("[user] unfastens the external armor layer.", "You unfasten the external armor layer.")
holder.icon_state = "hermes12"
return 1
/datum/construction/reversible/mecha/hermes/spawn_result()
..()
feedback_inc("mecha_hermes_created",1)
return

View File

@@ -299,3 +299,43 @@
origin_tech = list(TECH_MATERIAL = 3, TECH_ENGINEERING = 3) origin_tech = list(TECH_MATERIAL = 3, TECH_ENGINEERING = 3)
construction_time = 200 construction_time = 200
construction_cost = list(DEFAULT_WALL_MATERIAL=15000)*/ construction_cost = list(DEFAULT_WALL_MATERIAL=15000)*/
//////////// HERMES
/obj/item/mecha_parts/chassis/hermes
name = "Hermes Chassis"
Initialize()
..()
construct = new /datum/construction/mecha/hermes_chassis(src)
/obj/item/mecha_parts/part/hermes_torso
name="Hermes Torso"
icon_state = "hermes_harness"
origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 3, TECH_BIO = 3, TECH_ENGINEERING = 3)
/obj/item/mecha_parts/part/hermes_head
name="Hermes Head"
icon_state = "hermes_head"
origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 3, TECH_MAGNET = 3, TECH_ENGINEERING = 3)
/obj/item/mecha_parts/part/hermes_left_arm
name="Hermes Left Arm"
icon_state = "hermes_l_arm"
origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 3, TECH_ENGINEERING = 3)
/obj/item/mecha_parts/part/hermes_right_arm
name="Hermes Right Arm"
icon_state = "hermes_r_arm"
origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 3, TECH_ENGINEERING = 3)
/obj/item/mecha_parts/part/hermes_left_leg
name="Hermes Left Leg"
icon_state = "hermes_l_leg"
origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 3, TECH_ENGINEERING = 3)
/obj/item/mecha_parts/part/hermes_right_leg
name="Hermes Right Leg"
icon_state = "hermes_r_leg"
origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 3, TECH_ENGINEERING = 3)

View File

@@ -112,6 +112,27 @@
name = "Seraph wreckage" name = "Seraph wreckage"
icon_state = "seraph-broken" icon_state = "seraph-broken"
/obj/effect/decal/mecha_wreckage/hermes
name = "Hermes wreckage"
icon_state = "hermes-broken"
/obj/effect/decal/mecha_wreckage/hermes/New()
..()
var/list/parts = list(
/obj/item/mecha_parts/part/hermes_torso,
/obj/item/mecha_parts/part/hermes_left_arm,
/obj/item/mecha_parts/part/hermes_right_arm,
/obj/item/mecha_parts/part/hermes_left_leg,
/obj/item/mecha_parts/part/hermes_right_leg
)
for(var/i=0;i<2;i++)
if(!isemptylist(parts) && prob(40))
var/part = pick(parts)
welder_salvage += part
parts -= part
return
/obj/effect/decal/mecha_wreckage/ripley /obj/effect/decal/mecha_wreckage/ripley
name = "Ripley wreckage" name = "Ripley wreckage"
icon_state = "ripley-broken" icon_state = "ripley-broken"
@@ -130,6 +151,9 @@
parts -= part parts -= part
return return
/obj/effect/decal/mecha_wreckage/ripley/firefighter /obj/effect/decal/mecha_wreckage/ripley/firefighter
name = "Firefighter wreckage" name = "Firefighter wreckage"
icon_state = "firefighter-broken" icon_state = "firefighter-broken"

View File

@@ -0,0 +1,24 @@
/obj/mecha/working/hermes
desc = "The Einstein Engines Hermes mechanized industrial assistance unit is a fast, responsive and cheap mech meant for heavy lifting and field work over longer distances than others dominated by those of its Hephaestus counterparts."
name = "Hermes"
icon_state = "hermes"
initial_icon = "hermes"
step_in = 5
step_energy_drain = 0
max_temperature = 20000
health = 150
wreckage = /obj/effect/decal/mecha_wreckage/hermes
cargo_capacity = 6
damage_absorption = list("brute"=1.6,"fire"=0.3,"bullet"=0.5,"laser"=0.8,"energy"=1.25,"bomb"=2)
internals_req_access = list()
/obj/mecha/working/hermes/Destroy()
for(var/atom/movable/A in src.cargo)
A.forceMove(loc)
var/turf/T = loc
if(istype(T))
T.Entered(A)
step_rand(A)
cargo.Cut()
return ..()

View File

@@ -29,7 +29,7 @@
max_temperature = 65000 max_temperature = 65000
health = 250 health = 250
lights_power = 8 lights_power = 8
step_in = 7 step_in = 6
damage_absorption = list("brute"=0.6,"fire"=0.5,"bullet"=0.8,"laser"=0.7,"energy"=0.85,"bomb"=0.5) damage_absorption = list("brute"=0.6,"fire"=0.5,"bullet"=0.8,"laser"=0.7,"energy"=0.85,"bomb"=0.5)
wreckage = /obj/effect/decal/mecha_wreckage/ripley/firefighter wreckage = /obj/effect/decal/mecha_wreckage/ripley/firefighter

View File

@@ -84,6 +84,17 @@
name = T_BOARD_MECHA("Odysseus central control") name = T_BOARD_MECHA("Odysseus central control")
icon_state = "mainboard" icon_state = "mainboard"
/obj/item/weapon/circuitboard/mecha/hermes
origin_tech = list(TECH_DATA = 2)
/obj/item/weapon/circuitboard/mecha/hermes/peripherals
name = T_BOARD_MECHA("Hermes peripherals control")
icon_state = "mcontroller"
/obj/item/weapon/circuitboard/mecha/hermes/main
name = T_BOARD_MECHA("Hermes central control")
icon_state = "mainboard"
/obj/item/weapon/circuitboard/mecha/phazon /obj/item/weapon/circuitboard/mecha/phazon
origin_tech = list(TECH_DATA = 5, TECH_BLUESPACE = 5) origin_tech = list(TECH_DATA = 5, TECH_BLUESPACE = 5)

View File

@@ -357,6 +357,19 @@
/datum/design/circuit/mecha/AssembleDesignDesc() /datum/design/circuit/mecha/AssembleDesignDesc()
desc = "Allows for the construction of \a [name] module." desc = "Allows for the construction of \a [name] module."
/datum/design/circuit/mecha/hermes_main
name = "Hermes central control"
id = "hermes_main"
build_path = /obj/item/weapon/circuitboard/mecha/hermes/main
sort_string = "MAAAB"
/datum/design/circuit/mecha/hermes_peri
name = "Hermes peripherals control"
id = "hermes_peri"
build_path = /obj/item/weapon/circuitboard/mecha/hermes/peripherals
sort_string = "MAAAC"
/datum/design/circuit/mecha/ripley_main /datum/design/circuit/mecha/ripley_main
name = "APLU 'Ripley' central control" name = "APLU 'Ripley' central control"
id = "ripley_main" id = "ripley_main"

View File

@@ -324,6 +324,61 @@
time = 60 time = 60
materials = list(DEFAULT_WALL_MATERIAL = 50000, "uranium" = 10000) materials = list(DEFAULT_WALL_MATERIAL = 50000, "uranium" = 10000)
/// Hermes
/datum/design/item/mechfab/hermes
category = "Hermes"
/datum/design/item/mechfab/hermes/chassis
name = "Hermes chassis"
id = "hermes_chassis"
build_path = /obj/item/mecha_parts/chassis/hermes
time = 10
materials = list(DEFAULT_WALL_MATERIAL = 20000)
/datum/design/item/mechfab/hermes/torso
name = "Hermes torso"
id = "hermes_torso"
build_path = /obj/item/mecha_parts/part/hermes_torso
time = 18
materials = list(DEFAULT_WALL_MATERIAL = 21000)
/datum/design/item/mechfab/hermes/head
name = "Hermes head"
id = "hermes_head"
build_path = /obj/item/mecha_parts/part/hermes_head
time = 10
materials = list(DEFAULT_WALL_MATERIAL = 1000, "glass" = 1000)
/datum/design/item/mechfab/hermes/left_arm
name = "Hermes left arm"
id = "hermes_left_arm"
build_path = /obj/item/mecha_parts/part/hermes_left_arm
time = 12
materials = list(DEFAULT_WALL_MATERIAL = 10000)
/datum/design/item/mechfab/hermes/right_arm
name = "Hermes right arm"
id = "hermes_right_arm"
build_path = /obj/item/mecha_parts/part/hermes_right_arm
time = 12
materials = list(DEFAULT_WALL_MATERIAL = 10000)
/datum/design/item/mechfab/hermes/left_leg
name = "Hermes left leg"
id = "hermes_left_leg"
build_path = /obj/item/mecha_parts/part/hermes_left_leg
time = 13
materials = list(DEFAULT_WALL_MATERIAL = 10000)
/datum/design/item/mechfab/hermes/right_leg
name = "Hermes right leg"
id = "hermes_right_leg"
build_path = /obj/item/mecha_parts/part/hermes_right_leg
time = 13
materials = list(DEFAULT_WALL_MATERIAL = 10000)
/datum/design/item/robot_upgrade /datum/design/item/robot_upgrade
build_type = MECHFAB build_type = MECHFAB
time = 12 time = 12
@@ -376,6 +431,10 @@
materials = list(DEFAULT_WALL_MATERIAL = 10000, "phoron" = 15000, "uranium" = 20000) materials = list(DEFAULT_WALL_MATERIAL = 10000, "phoron" = 15000, "uranium" = 20000)
build_path = /obj/item/robot_parts/robot_component/jetpack build_path = /obj/item/robot_parts/robot_component/jetpack
/* /*
//Commented out by nanako //Commented out by nanako
/datum/design/item/robot_upgrade/rcd /datum/design/item/robot_upgrade/rcd

View File

@@ -0,0 +1,41 @@
################################
# Example Changelog File
#
# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb.
#
# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.)
# When it is, any changes listed below will disappear.
#
# Valid Prefixes:
# bugfix
# wip (For works in progress)
# tweak
# soundadd
# sounddel
# rscadd (general adding of nice things)
# rscdel (general deleting of nice things)
# imageadd
# imagedel
# maptweak
# spellcheck (typo fixes)
# experiment
# balance
# admin
# backend
# security
# refactor
#################################
# Your name.
author: Drago,Kyres
# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again.
delete-after: True
# Any changes you've made. See valid prefix list above.
# INDENT WITH TWO SPACES. NOT TABS. SPACES.
# SCREW THIS UP AND IT WON'T WORK.
# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries.
# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog.
changes:
- rscadd: "Add's the Hermes mech to robotics."

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 183 KiB

After

Width:  |  Height:  |  Size: 198 KiB