Resprites mechs, adds a few new things (#9950)

This commit is contained in:
kyres1
2020-09-13 00:03:59 -05:00
committed by GitHub
parent 35c45cb459
commit 87ac8edc07
18 changed files with 188 additions and 128 deletions
+13 -14
View File
@@ -12,7 +12,6 @@
name = "mounted ion rifle"
desc = "An exosuit-mounted ion rifle. Handle with care."
icon_state = "mecha_ion"
restricted_hardpoints = list(HARDPOINT_LEFT_HAND, HARDPOINT_RIGHT_HAND)
holding_type = /obj/item/gun/energy/rifle/ionrifle/mounted/mech
/obj/item/mecha_equipment/mounted_system/taser/laser
@@ -31,7 +30,7 @@
/obj/item/mecha_equipment/mounted_system/pulse
name = "heavy pulse cannon"
desc = "A weapon for combat exosuits. The eZ-13 mk2 heavy pulse rifle shoots powerful pulse-based beams, capable of destroying structures."
icon_state = "railauto"
icon_state = "pulse"
holding_type = /obj/item/gun/energy/pulse/mounted/mech
restricted_hardpoints = list(HARDPOINT_LEFT_HAND, HARDPOINT_RIGHT_HAND, HARDPOINT_LEFT_SHOULDER, HARDPOINT_RIGHT_SHOULDER)
restricted_software = list(MECH_SOFTWARE_ADVWEAPONS)
@@ -41,7 +40,7 @@
desc = "A weapon for combat exosuits. Shoots armor penetrating xray beams."
icon_state = "mecha_xray"
holding_type = /obj/item/gun/energy/xray/mounted/mech
restricted_hardpoints = list(HARDPOINT_LEFT_HAND, HARDPOINT_RIGHT_HAND)
restricted_hardpoints = list(HARDPOINT_LEFT_HAND, HARDPOINT_RIGHT_HAND, HARDPOINT_LEFT_SHOULDER, HARDPOINT_RIGHT_SHOULDER)
restricted_software = list(MECH_SOFTWARE_ADVWEAPONS)
/obj/item/mecha_equipment/mounted_system/blaster
@@ -68,22 +67,22 @@
/obj/item/gun/energy/rifle/ionrifle/mounted/mech
use_external_power = TRUE
self_recharge = TRUE
has_safety = FALSE
has_safety = FALSE
/obj/item/gun/energy/laser/mounted/mech
use_external_power = TRUE
self_recharge = TRUE
has_safety = FALSE
has_safety = FALSE
/obj/item/gun/energy/pulse/mounted/mech
use_external_power = TRUE
self_recharge = TRUE
has_safety = FALSE
has_safety = FALSE
/obj/item/gun/energy/xray/mounted/mech
use_external_power = TRUE
self_recharge = TRUE
has_safety = FALSE
has_safety = FALSE
/*Launchers*/
@@ -98,7 +97,7 @@
/obj/item/mecha_equipment/mounted_system/grenadefrag
name = "frag grenade launcher"
desc = "The SGL-6FR grenade launcher is designed to launch primed fragmentation grenades."
icon_state = "mecha_fraglnchr"
icon_state = "mech_gl"
holding_type = /obj/item/gun/launcher/mech/mountedgl
restricted_hardpoints = list(HARDPOINT_LEFT_SHOULDER, HARDPOINT_RIGHT_SHOULDER)
restricted_software = list(MECH_SOFTWARE_ADVWEAPONS)
@@ -106,7 +105,7 @@
/obj/item/mecha_equipment/mounted_system/grenadeflash
name = "flashbang launcher"
desc = "The SGL-6FL grenade launcher is designated to launch primed flashbangs."
icon_state = "mecha_grenadelnchr"
icon_state = "mech_gl"
holding_type = /obj/item/gun/launcher/mech/mountedfl
restricted_hardpoints = list(HARDPOINT_LEFT_SHOULDER, HARDPOINT_RIGHT_SHOULDER)
restricted_software = list(MECH_SOFTWARE_WEAPONS)
@@ -114,7 +113,7 @@
/obj/item/mecha_equipment/mounted_system/grenadetear
name = "teargas launcher"
desc = "The SGL-6TGL grenade launcher is designated to launch primed teargas grenades."
icon_state = "mecha_grenadelnchr"
icon_state = "mech_gl"
holding_type = /obj/item/gun/launcher/mech/mountedtgl
restricted_hardpoints = list(HARDPOINT_LEFT_SHOULDER, HARDPOINT_RIGHT_SHOULDER)
restricted_software = list(MECH_SOFTWARE_WEAPONS)
@@ -122,7 +121,7 @@
/obj/item/mecha_equipment/mounted_system/grenadesmoke
name = "smoke grenade launcher"
desc = "The SGL-6SGL grenade launcher is designated to launch primed smoke grenades."
icon_state = "mecha_grenadelnchr"
icon_state = "mech_gl"
holding_type = /obj/item/gun/launcher/mech/mountedsgl
restricted_hardpoints = list(HARDPOINT_LEFT_SHOULDER, HARDPOINT_RIGHT_SHOULDER)
restricted_software = list(MECH_SOFTWARE_WEAPONS)
@@ -363,7 +362,7 @@
if((world.time - last_recharge) < cooldown)
return
var/obj/item/cell/cell = owner.get_cell()
var/actual_required_power = Clamp(max_charge - charge, 0, charging_rate)
charge += cell.use(actual_required_power)
@@ -396,7 +395,7 @@
user.vis_contents -= src
shields = null
. = ..()
/obj/aura/mechshield/proc/toggle()
active = !active
@@ -406,7 +405,7 @@
flick("shield_raise", src)
else
flick("shield_drop", src)
/obj/aura/mechshield/update_icon()
. = ..()
+6 -25
View File
@@ -20,16 +20,16 @@ proc/get_mech_icon(var/list/components = list(), var/overlay_layer = FLOAT_LAYER
return all_images
/mob/living/heavy_vehicle/update_icon()
var/list/new_overlays = get_mech_icon(list(body, head), MECH_BASE_LAYER)
var/list/new_overlays = get_mech_icon(list(body), MECH_BASE_LAYER)
if(body && !hatch_closed)
new_overlays += get_mech_image("[body.icon_state]_cockpit", body.on_mech_icon, MECH_BASE_LAYER)
update_pilot_overlay(FALSE)
if(LAZYLEN(pilot_overlays))
new_overlays += pilot_overlays
if(head)
new_overlays += get_mech_image("[head.icon_state]", head.on_mech_icon, head.color, MECH_INTERMEDIATE_LAYER)
new_overlays += get_mech_image("[head.icon_state]_eyes", head.on_mech_icon, null, MECH_INTERMEDIATE_LAYER)
if(body)
new_overlays += get_mech_image("[body.icon_state]_overlay[hatch_closed ? "" : "_open"]", body.on_mech_icon, body.color, MECH_COCKPIT_LAYER)
new_overlays += get_mech_image("[body.icon_state]_overlay[hatch_closed ? "" : "_open"]", body.on_mech_icon, body.color, MECH_BASE_LAYER)
if(arms)
new_overlays += get_mech_image(arms.icon_state, arms.on_mech_icon, arms.color, MECH_ARM_LAYER)
if(legs)
@@ -52,30 +52,11 @@ proc/get_mech_icon(var/list/components = list(), var/overlay_layer = FLOAT_LAYER
var/use_icon_state = "[object_icon_state]_[hardpoint]"
if(use_icon_state in mecha_weapon_overlays)
new_overlays += get_mech_image(use_icon_state, 'icons/mecha/mecha_weapon_overlays.dmi', null, hardpoint_object.mech_layer)
var/far_icon_state = "[use_icon_state]_far"
if(far_icon_state in mecha_weapon_overlays)
new_overlays += get_mech_image(far_icon_state, 'icons/mecha/mecha_weapon_overlays.dmi', null, MECH_BASE_LAYER - 0.01)
overlays = new_overlays
/mob/living/heavy_vehicle/proc/update_pilot_overlay(var/update_overlays = TRUE)
if(update_overlays && LAZYLEN(pilot_overlays))
overlays -= pilot_overlays
pilot_overlays = null
if(!body || ((body.pilot_coverage < 100 || body.transparent_cabin) && !body.hide_pilot))
for(var/i = 1 to LAZYLEN(pilots))
var/mob/pilot = pilots[i]
var/image/draw_pilot = new
draw_pilot.appearance = pilot
draw_pilot.layer = MECH_PILOT_LAYER + (body ? ((LAZYLEN(body.pilot_positions)-i)*0.001) : 0)
draw_pilot.plane = FLOAT_PLANE
if(body && i <= LAZYLEN(body.pilot_positions))
var/list/offset_values = body.pilot_positions[i]
var/list/directional_offset_values = offset_values["[dir]"]
draw_pilot.pixel_x = directional_offset_values["x"]
draw_pilot.pixel_y = directional_offset_values["y"]
draw_pilot.pixel_z = 0
draw_pilot.transform = null
LAZYADD(pilot_overlays, draw_pilot)
if(update_overlays && LAZYLEN(pilot_overlays))
overlays += pilot_overlays
/mob/living/heavy_vehicle/regenerate_icons()
return
@@ -233,13 +233,11 @@
user.forceMove(src)
LAZYDISTINCTADD(pilots, user)
sync_access()
update_pilot_overlay()
playsound(src, 'sound/machines/windowdoor.ogg', 50, 1)
user << sound('sound/mecha/nominal.ogg',volume=50)
if(user.client) user.client.screen |= hud_elements
LAZYDISTINCTADD(user.additional_vision_handlers, src)
update_icon()
update_pilot_overlay()
return 1
/mob/living/heavy_vehicle/proc/sync_access()
@@ -275,8 +273,6 @@
set_intent(I_HURT)
LAZYREMOVE(pilots, user)
UNSETEMPTY(pilots)
update_pilot_overlay()
return
/mob/living/heavy_vehicle/relaymove(var/mob/living/user, var/direction)
if(world.time < next_mecha_move)
-1
View File
@@ -19,7 +19,6 @@
pilot.client.screen -= hud_elements
LAZYREMOVE(pilots, pilot)
UNSETEMPTY(pilots)
update_pilot_overlay()
if(radio)
radio.on = (head?.radio && head.radio.is_functional())
@@ -180,22 +180,22 @@
)
var/mech_colour = super_random ? FALSE : pick(use_colours)
if(!arms)
var/list/forbidden_arm_types = list(/obj/item/mech_component/manipulators/cult)
var/list/forbidden_arm_types = list(/obj/item/mech_component/manipulators/cult, /obj/item/mech_component/manipulators/superheavy, /obj/item/mech_component/manipulators/combat)
var/armstype = pick(subtypesof(/obj/item/mech_component/manipulators) - forbidden_arm_types)
arms = new armstype(src)
arms.color = mech_colour ? mech_colour : pick(use_colours)
if(!legs)
var/list/forbidden_leg_types = list(/obj/item/mech_component/propulsion/cult)
var/list/forbidden_leg_types = list(/obj/item/mech_component/propulsion/cult, /obj/item/mech_component/propulsion/superheavy, /obj/item/mech_component/propulsion/combat)
var/legstype = pick(subtypesof(/obj/item/mech_component/propulsion) - forbidden_leg_types)
legs = new legstype(src)
legs.color = mech_colour ? mech_colour : pick(use_colours)
if(!head)
var/list/forbidden_head_types = list(/obj/item/mech_component/sensors/cult)
var/list/forbidden_head_types = list(/obj/item/mech_component/sensors/cult, /obj/item/mech_component/sensors/superheavy, /obj/item/mech_component/sensors/combat)
var/headtype = pick(subtypesof(/obj/item/mech_component/sensors) - forbidden_head_types)
head = new headtype(src)
head.color = mech_colour ? mech_colour : pick(use_colours)
if(!body)
var/list/forbidden_body_types = list(/obj/item/mech_component/chassis/cult)
var/list/forbidden_body_types = list(/obj/item/mech_component/chassis/cult, /obj/item/mech_component/chassis/superheavy, /obj/item/mech_component/chassis/combat)
var/bodytype = pick(subtypesof(/obj/item/mech_component/chassis) - forbidden_body_types)
body = new bodytype(src)
body.color = mech_colour ? mech_colour : pick(use_colours)
+13 -4
View File
@@ -9,24 +9,28 @@
e_legs = /obj/item/mech_component/propulsion/combat
e_color = COLOR_DARK_GUNMETAL
h_r_shoulder = /obj/item/mecha_equipment/mounted_system/grenadetear
h_l_hand = /obj/item/mecha_equipment/mounted_system/blaster
h_r_hand = /obj/item/mecha_equipment/mounted_system/taser/ion
h_r_shoulder = /obj/item/mecha_equipment/mounted_system/taser/smg
h_l_shoulder = /obj/item/mecha_equipment/mounted_system/taser/smg
/obj/item/mech_component/manipulators/combat
name = "combat arms"
exosuit_desc_string = "flexible, advanced manipulators"
desc = "Extremely fast and responsive weapon mounts for combat mechas. These seem sturdy, but their short nature only permits access to shoulder-mounted weapons."
icon_state = "combat_arms"
melee_damage = 30
action_delay = 10
action_delay = 5
max_damage = 130
power_use = 5000
has_hardpoints = list(HARDPOINT_LEFT_SHOULDER, HARDPOINT_RIGHT_SHOULDER)
/obj/item/mech_component/propulsion/combat
name = "combat legs"
exosuit_desc_string = "sleek hydraulic legs"
desc = "Complex armor provides excellent protective coverage over the internals of these combat-oriented legs."
icon_state = "combat_legs"
move_delay = 3
turn_delay = 3
max_damage = 100
power_use = 5000
trample_damage = 35
@@ -34,7 +38,9 @@
name = "combat sensors"
gender = PLURAL
exosuit_desc_string = "high-resolution sensors"
desc = "A highly advanced cockpit with high-resolution thermal optics installed on its faces. Poorly armored with excellent situational awareness."
icon_state = "combat_head"
max_damage = 50
power_use = 50000
vision_flags = SEE_MOBS
see_invisible = SEE_INVISIBLE_NOLIGHTING
@@ -50,9 +56,12 @@
hatch_descriptor = "canopy"
pilot_coverage = 100
exosuit_desc_string = "an armored chassis"
desc = "A lightweight composite frame keeps the armor of this chassis respectable, but the interior spacious."
icon_state = "combat_body"
max_damage = 200
power_use = 2500
transparent_cabin = TRUE
has_hardpoints = list(HARDPOINT_BACK)
/obj/item/mech_component/chassis/combat/prebuild()
. = ..()
@@ -63,34 +63,3 @@
. = ..()
mech_armor = new /obj/item/robot_parts/robot_component/armor/mech/combat(src)
/obj/item/mech_component/chassis/superheavy
name = "reinforced exosuit chassis"
hatch_descriptor = "hatch"
desc = "The HI-Koloss chassis is a veritable juggernaut, capable of protecting a pilot even in the most hostile of environments. It handles like a battlecruiser, however."
pilot_coverage = 100
exosuit_desc_string = "a heavily armored chassis"
icon_state = "heavy_body"
max_damage = 450
mech_health = 1250
has_hardpoints = list(HARDPOINT_BACK, HARDPOINT_LEFT_SHOULDER, HARDPOINT_RIGHT_SHOULDER)
power_use = 15000
/obj/item/mech_component/chassis/superheavy/prebuild()
. = ..()
cell = new /obj/item/cell/super(src)
mech_armor = new /obj/item/robot_parts/robot_component/armor/mech/combat(src)
/mob/living/heavy_vehicle/premade/superheavy
name = "Marauder"
desc = "Heavy-duty, combat exosuit, developed after the Durand model. Rarely found among civilian populations."
icon_state = "darkgygax"
e_head = /obj/item/mech_component/sensors/heavy
e_body = /obj/item/mech_component/chassis/superheavy
e_arms = /obj/item/mech_component/manipulators/heavy
e_legs = /obj/item/mech_component/propulsion/heavy
e_color = COLOR_DARK_GUNMETAL
h_r_shoulder = /obj/item/mecha_equipment/mounted_system/missile
h_l_shoulder = /obj/item/mecha_equipment/mounted_system/pulse
h_r_hand = /obj/item/mecha_equipment/mounted_system/taser/smg
+16 -37
View File
@@ -1,44 +1,23 @@
/mob/living/heavy_vehicle/premade/hoverpod
name = "hoverpod"
desc = "An aging exosuit, produced to be a cheap variant to traditional space transport."
icon_state = "engineering_pod"
e_head = /obj/item/mech_component/sensors/ripley
e_body = /obj/item/mech_component/chassis/pod
e_arms = /obj/item/mech_component/manipulators/ripley
e_legs = /obj/item/mech_component/propulsion/hover
e_color = COLOR_BLUE_GRAY
h_l_hand = /obj/item/mecha_equipment/drill
h_r_hand = /obj/item/mecha_equipment/clamp
/obj/item/mech_component/propulsion/hover
name = "hover thrusters"
exosuit_desc_string = "hover thrusters"
desc = "An ancient set of hover thrusters capable of keeping a exosuit aloft."
icon_state = "hoverlegs"
name = "heavy thrusters"
exosuit_desc_string = "heavy thrusters"
desc = "An set of very powerful hover-thrusters meant to propel an exosuit. These seem bulky."
icon_state = "heavy-hoverlegs"
mech_turn_sound = null
mech_step_sound = null
max_damage = 80
move_delay = 4
max_damage = 150
move_delay = 5
turn_delay = 2
power_use = 3000
power_use = 4000
trample_damage = 0
hover = TRUE
/obj/item/mech_component/chassis/pod
name = "spherical exosuit chassis"
desc = "A simple spherical exosuit cockpit commonly used in space pods."
hatch_descriptor = "window"
pilot_coverage = 100
transparent_cabin = TRUE
hide_pilot = TRUE
exosuit_desc_string = "a spherical chassis"
icon_state = "pod_body"
max_damage = 150
power_use = 5
has_hardpoints = list(HARDPOINT_BACK)
/obj/item/mech_component/chassis/pod/prebuild()
. = ..()
mech_armor = new /obj/item/robot_parts/robot_component/armor/mech/radproof(src)
/obj/item/mech_component/propulsion/hover/light
name = "light thrusters"
exosuit_desc_string = "light thrusters"
desc = "A set of fragile hover-thrusters. This variant seems to sacrifice vast structural integrity for... more speed."
icon_state = "light-hoverlegs"
max_damage = 40
move_delay = 2
turn_delay = 2
power_use = 1500
@@ -0,0 +1,64 @@
/obj/item/mech_component/manipulators/superheavy
name = "superheavy arms"
exosuit_desc_string = "super-heavy reinforced manipulators"
icon_state = "strider_arms"
desc = "These basic, heavy plasteel mounts are used for mounting only the meanest weapons. Probably good at breaking things, too."
melee_damage = 50
action_delay = 15
max_damage = 4000
power_use = 7500
has_hardpoints = list(HARDPOINT_LEFT_SHOULDER, HARDPOINT_RIGHT_SHOULDER)
punch_sound = 'sound/mecha/mech_punch_slow.ogg'
/obj/item/mech_component/propulsion/superheavy
name = "superheavy motivators"
exosuit_desc_string = "heavy hydraulic legs"
desc = "Four utterly goliath stump-like pistons hold this propulsion mechanism together."
icon_state = "strider_legs"
move_delay = 5
max_damage = 650
power_use = 5000
trample_damage = 45
/obj/item/mech_component/sensors/superheavy
name = "superheavy sensors"
exosuit_desc_string = "a reinforced monoeye"
desc = "A small optic is all that can be discerned of this faceless, unmarked spire of an exosuit control center."
icon_state = "strider_head"
max_damage = 550
power_use = 0
/obj/item/mech_component/sensors/superheavy/prebuild()
..()
software = new(src)
software.installed_software = list(MECH_SOFTWARE_WEAPONS, MECH_SOFTWARE_ADVWEAPONS)
/obj/item/mech_component/chassis/superheavy
name = "heavy-duty military chassis"
hatch_descriptor = "hatch"
desc = "A cramped compartment and a senseless amount of armor is all this steel coffin contains."
pilot_coverage = 100
exosuit_desc_string = "a heavily armored chassis"
icon_state = "strider_body"
max_damage = 750
mech_health = 3500
power_use = 15000
/obj/item/mech_component/chassis/superheavy/prebuild()
. = ..()
cell = new /obj/item/cell/super(src)
mech_armor = new /obj/item/robot_parts/robot_component/armor/mech/combat(src)
/mob/living/heavy_vehicle/premade/superheavy
name = "Basilisk"
desc = "An incredibly heavy-duty quadruped war machine derived from an Interstellar War design."
icon_state = "darkgygax"
e_head = /obj/item/mech_component/sensors/superheavy
e_body = /obj/item/mech_component/chassis/superheavy
e_arms = /obj/item/mech_component/manipulators/superheavy
e_legs = /obj/item/mech_component/propulsion/superheavy
e_color = COLOR_DARK_GUNMETAL
h_r_shoulder = /obj/item/mecha_equipment/mounted_system/pulse
h_l_shoulder = /obj/item/mecha_equipment/mounted_system/pulse
+12 -1
View File
@@ -1,7 +1,7 @@
/obj/item/mech_component/propulsion/spider
name = "quadlegs"
exosuit_desc_string = "hydraulic quadlegs"
desc = "Xion Manufacturing Group's arachnid series boasts more leg per leg than the leading competitor."
desc = "Xion Manufacturing Group's arachnid series boasts more leg per leg than the leading competitor. Useful for vehicles requiring tight, instant turning."
icon_state = "spiderlegs"
max_damage = 160
move_delay = 4
@@ -9,6 +9,17 @@
power_use = 2500
trample_damage = 10
/obj/item/mech_component/propulsion/spider/heavy
name = "industrial quadlegs"
exosuit_desc_string = "hydraulic quadlegs"
desc = "A titan's take on the arachnid series from Xion Manufacturing Group. Much heavier than its smaller counterpart at the sacrifice of acceleration and power draw."
icon_state = "spiderlegs-industrial"
max_damage = 250
move_delay = 5
turn_delay = 1
power_use = 7500
trample_damage = 25
/obj/item/mech_component/propulsion/tracks
name = "tracks"
exosuit_desc_string = "armored tracks"
@@ -55,7 +55,7 @@
hatch_descriptor = "roll cage"
pilot_coverage = 40
exosuit_desc_string = "an industrial rollcage"
desc = "A Xion industrial brand roll cage. Technically OSHA compliant. Technically."
desc = "A Xion industrial brand roll cage. Technically OSHA compliant. Technically. This variant has an extra compartment for a copilot, but has no sealed atmosphere."
max_damage = 200
power_use = 5000
@@ -177,18 +177,25 @@
build_path = /obj/item/mech_component/propulsion/spider
req_tech = list(TECH_ENGINEERING = 2)
/datum/design/item/mechfab/exosuit/hover_torso
name = "Hoverpod Torso"
time = 40
materials = list(DEFAULT_WALL_MATERIAL = 22000)
build_path = /obj/item/mech_component/chassis/pod
/datum/design/item/mechfab/exosuit/spider/heavy
name = "Industrial Quadruped Motivators"
time = 35
materials = list(DEFAULT_WALL_MATERIAL = 25000)
build_path = /obj/item/mech_component/propulsion/spider/heavy
req_tech = list(TECH_ENGINEERING = 4)
/datum/design/item/mechfab/exosuit/hover_legs
name = "Hoverthrusters"
name = "Heavy Hoverthrusters"
time = 35
materials = list(DEFAULT_WALL_MATERIAL = 14000)
build_path = /obj/item/mech_component/propulsion/hover
/datum/design/item/mechfab/exosuit/hover_legs/light
name = "Light Hoverthrusters"
time = 25
materials = list(DEFAULT_WALL_MATERIAL = 7500)
build_path = /obj/item/mech_component/propulsion/hover/light
/datum/design/item/mechfab/exosuit/track
name = "Armored Treads"
time = 35