Mech Mini 'Revamp'. Will need playtesting. (#5480)

* Exosuits are now capable of holding more equipment, of specific types.

* Tweaks regarding feedback in staffside thread, other concerns.

* Tweak to be more consistent. Why did the Odysseus have two universals. Tweak to weapon restriction on Med - > Odyss

* Weapons only fit in universal combat slots.
This commit is contained in:
Mechoid
2018-08-21 13:08:58 -07:00
committed by Anewbe
parent 51ad266de7
commit 6f909ce590
18 changed files with 1613 additions and 1358 deletions

View File

@@ -10,6 +10,13 @@
damage_absorption = list("brute"=0.7,"fire"=1,"bullet"=0.7,"laser"=0.85,"energy"=1,"bomb"=0.8)
var/am = "d3c2fbcadca903a41161ccc9df9cf948"
max_hull_equip = 2
max_weapon_equip = 2
max_utility_equip = 1
max_universal_equip = 1
max_special_equip = 1
cargo_capacity = 1
/*
/obj/mecha/combat/range_action(target as obj|mob|turf)
if(internal_damage&MECHA_INT_CONTROL_LOST)

View File

@@ -6,6 +6,7 @@
step_in = 4
dir_in = 1 //Facing North.
health = 400
maxhealth = 400
deflect_chance = 20
damage_absorption = list("brute"=0.5,"fire"=1.1,"bullet"=0.65,"laser"=0.85,"energy"=0.9,"bomb"=0.8)
max_temperature = 30000
@@ -15,6 +16,12 @@
var/defence_deflect = 35
wreckage = /obj/effect/decal/mecha_wreckage/durand
max_hull_equip = 2
max_weapon_equip = 1
max_utility_equip = 2
max_universal_equip = 1
max_special_equip = 1
/*
/obj/mecha/combat/durand/New()
..()

View File

@@ -64,6 +64,7 @@
pixel_x = -16
step_in = 10
health = 5000
maxhealth = 5000
opacity = 0 // Because there's big tall legs to look through. Also it looks fucky if this is set to 1.
deflect_chance = 50
damage_absorption = list("brute"=0.1,"fire"=0.8,"bullet"=0.1,"laser"=0.6,"energy"=0.7,"bomb"=0.7) //values show how much damage will pass through, not how much will be absorbed.
@@ -79,6 +80,12 @@
internal_damage_threshold = 25
force = 60
max_equip = 5
//This will (Should) never be in the hands of players. If it is, the one who inflicted this monster upon the server can edit these vars to not be insane.
max_hull_equip = 5
max_weapon_equip = 5
max_utility_equip = 5
max_universal_equip = 5
max_special_equip = 2
/obj/mecha/combat/gorilla/New()
..()

View File

@@ -6,6 +6,7 @@
step_in = 3
dir_in = 1 //Facing North.
health = 300
maxhealth = 300
deflect_chance = 15
damage_absorption = list("brute"=0.75,"fire"=1,"bullet"=0.8,"laser"=0.7,"energy"=0.85,"bomb"=1)
max_temperature = 25000
@@ -16,12 +17,19 @@
internal_damage_threshold = 35
max_equip = 3
max_hull_equip = 1
max_weapon_equip = 2
max_utility_equip = 2
max_universal_equip = 1
max_special_equip = 1
/obj/mecha/combat/gygax/dark
desc = "A lightweight exosuit used by Heavy Asset Protection. A significantly upgraded Gygax security mech."
name = "Dark Gygax"
icon_state = "darkgygax"
initial_icon = "darkgygax"
health = 400
maxhealth = 400
deflect_chance = 25
damage_absorption = list("brute"=0.6,"fire"=0.8,"bullet"=0.6,"laser"=0.5,"energy"=0.65,"bomb"=0.8)
max_temperature = 45000
@@ -30,6 +38,12 @@
max_equip = 4
step_energy_drain = 5
max_hull_equip = 1
max_weapon_equip = 2
max_utility_equip = 2
max_universal_equip = 1
max_special_equip = 2
/obj/mecha/combat/gygax/dark/New()
..()
var/obj/item/mecha_parts/mecha_equipment/ME = new /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/scattershot

View File

@@ -5,6 +5,7 @@
initial_icon = "marauder"
step_in = 5
health = 500
maxhealth = 500
deflect_chance = 25
damage_absorption = list("brute"=0.5,"fire"=0.7,"bullet"=0.45,"laser"=0.6,"energy"=0.7,"bomb"=0.7)
max_temperature = 60000
@@ -22,6 +23,12 @@
force = 45
max_equip = 4
max_hull_equip = 3
max_weapon_equip = 3
max_utility_equip = 3
max_universal_equip = 1
max_special_equip = 1
/obj/mecha/combat/marauder/seraph
desc = "Heavy-duty, command-type exosuit. This is a custom model, utilized only by high-ranking military personnel."
name = "Seraph"
@@ -62,7 +69,7 @@
var/obj/item/mecha_parts/mecha_equipment/ME
if(equipment.len)//Now to remove it and equip anew.
for(ME in equipment)
equipment -= ME
ME.detach()
qdel(ME)
ME = new /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/scattershot(src)
ME.attach(src)

View File

@@ -7,6 +7,7 @@
dir_in = 1 //Facing North.
step_energy_drain = 3
health = 200
maxhealth = 200
deflect_chance = 30
damage_absorption = list("brute"=0.7,"fire"=0.7,"bullet"=0.7,"laser"=0.7,"energy"=0.7,"bomb"=0.7)
max_temperature = 25000
@@ -20,6 +21,11 @@
var/phasing_energy_drain = 200
max_equip = 4
max_hull_equip = 3
max_weapon_equip = 3
max_utility_equip = 3
max_universal_equip = 3
max_special_equip = 4
/obj/mecha/combat/phazon/New()
..()

View File

@@ -1,5 +1,9 @@
//DO NOT ADD MECHA PARTS TO THE GAME WITH THE DEFAULT "SPRITE ME" SPRITE!
//I'm annoyed I even have to tell you this! SPRITE FIRST, then commit.
#define EQUIP_HULL 1
#define EQUIP_WEAPON 2
#define EQUIP_UTILITY 3
#define EQUIP_SPECIAL 4
/obj/item/mecha_parts/mecha_equipment
name = "mecha equipment"
@@ -14,7 +18,7 @@
var/range = MELEE //bitflags
var/salvageable = 1
var/required_type = /obj/mecha //may be either a type or a list of allowed types
var/equip_type = null //mechaequip2
/obj/item/mecha_parts/mecha_equipment/proc/do_after_cooldown(target=1)
sleep(equip_cooldown)
@@ -43,6 +47,20 @@
/obj/item/mecha_parts/mecha_equipment/proc/destroy()//missiles detonating, teleporter creating singularity?
if(chassis)
if(equip_type)
if(equip_type == EQUIP_HULL)
chassis.hull_equipment -= src
listclearnulls(chassis.hull_equipment)
if(equip_type == EQUIP_WEAPON)
chassis.weapon_equipment -= src
listclearnulls(chassis.weapon_equipment)
if(equip_type == EQUIP_UTILITY)
chassis.utility_equipment -= src
listclearnulls(chassis.utility_equipment)
if(equip_type == EQUIP_SPECIAL)
chassis.special_equipment -= src
listclearnulls(chassis.special_equipment)
chassis.universal_equipment -= src
chassis.equipment -= src
listclearnulls(chassis.equipment)
if(chassis.selected == src)
@@ -89,19 +107,49 @@
return
/obj/item/mecha_parts/mecha_equipment/proc/can_attach(obj/mecha/M as obj)
if(M.equipment.len >= M.max_equip)
return 0
if (ispath(required_type))
//if(M.equipment.len >= M.max_equip)
// return 0
for(var/obj/item/mecha_parts/mecha_equipment/ME in M.equipment) //Exact duplicate components aren't allowed.
if(ME.type == src.type)
return 0
if(equip_type == EQUIP_HULL && M.hull_equipment.len < M.max_hull_equip)
return 1
if(equip_type == EQUIP_WEAPON && M.weapon_equipment.len < M.max_weapon_equip)
return 1
if(equip_type == EQUIP_UTILITY && M.utility_equipment.len < M.max_utility_equip)
return 1
if(equip_type == EQUIP_SPECIAL && M.special_equipment.len < M.max_special_equip)
return 1
if(equip_type != EQUIP_SPECIAL && M.universal_equipment.len < M.max_universal_equip) //The exosuit needs to be military grade to actually have a universal slot capable of accepting a true weapon.
if(equip_type == EQUIP_WEAPON && !istype(M, /obj/mecha/combat))
return 0
return 1
/*if (ispath(required_type))
return istype(M, required_type)
for (var/path in required_type)
if (istype(M, path))
return 1
*/
return 0
/obj/item/mecha_parts/mecha_equipment/proc/attach(obj/mecha/M as obj)
//M.equipment += src
var/has_equipped = 0
if(equip_type == EQUIP_HULL && M.hull_equipment.len < M.max_hull_equip && !has_equipped)
M.hull_equipment += src
has_equipped = 1
if(equip_type == EQUIP_WEAPON && M.weapon_equipment.len < M.max_weapon_equip && !has_equipped)
M.weapon_equipment += src
has_equipped = 1
if(equip_type == EQUIP_UTILITY && M.utility_equipment.len < M.max_utility_equip && !has_equipped)
M.utility_equipment += src
has_equipped = 1
if(equip_type == EQUIP_SPECIAL && M.special_equipment.len < M.max_special_equip && !has_equipped)
M.special_equipment += src
has_equipped = 1
if(equip_type != EQUIP_SPECIAL && M.universal_equipment.len < M.max_universal_equip && !has_equipped)
M.universal_equipment += src
M.equipment += src
chassis = M
src.loc = M
@@ -115,6 +163,17 @@
moveto = moveto || get_turf(chassis)
if(src.Move(moveto))
chassis.equipment -= src
chassis.universal_equipment -= src
if(equip_type)
switch(equip_type)
if(EQUIP_HULL)
chassis.hull_equipment -= src
if(EQUIP_WEAPON)
chassis.weapon_equipment -= src
if(EQUIP_UTILITY)
chassis.utility_equipment -= src
if(EQUIP_SPECIAL)
chassis.special_equipment -= src
if(chassis.selected == src)
chassis.selected = null
update_chassis_page()

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -12,6 +12,8 @@
var/auto_rearm = 0 //Does the weapon reload itself after each shot?
required_type = list(/obj/mecha/combat, /obj/mecha/working/hoverpod/combatpod)
equip_type = EQUIP_WEAPON
/obj/item/mecha_parts/mecha_equipment/weapon/action_checks(atom/target)
if(projectiles <= 0)
return 0
@@ -68,12 +70,14 @@
equip_cooldown = 30
name = "jury-rigged welder-laser"
desc = "While not regulation, this inefficient weapon can be attached to working exo-suits in desperate, or malicious, times."
icon_state = "mecha_laser"
icon_state = "mecha_laser-rig"
energy_drain = 80
projectile = /obj/item/projectile/beam
fire_sound = 'sound/weapons/Laser.ogg'
required_type = list(/obj/mecha/combat, /obj/mecha/working)
equip_type = EQUIP_UTILITY
/obj/item/mecha_parts/mecha_equipment/weapon/energy/laser/heavy
equip_cooldown = 15
name = "\improper CH-LC \"Solaris\" laser cannon"
@@ -127,6 +131,8 @@
equip_cooldown = 150
origin_tech = list(TECH_MATERIAL = 2, TECH_COMBAT = 4, TECH_ILLEGAL = 1)
equip_type = EQUIP_SPECIAL
/obj/item/mecha_parts/mecha_equipment/honker/action(target)
if(!chassis)
return 0
@@ -198,7 +204,7 @@
equip_cooldown = 10
projectile = /obj/item/projectile/bullet/pistol/medium
fire_sound = 'sound/weapons/machinegun.ogg'
projectiles = 300
projectiles = 30 //10 bursts, matching the Scattershot's 10. Also, conveniently, doesn't eat your powercell when reloading like 300 bullets does.
projectiles_per_shot = 3
deviation = 0.3
projectile_energy_cost = 20
@@ -224,6 +230,8 @@
missile_range = 15
required_type = /obj/mecha //Why restrict it to just mining or combat mechs?
equip_type = EQUIP_UTILITY
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/flare/Fire(atom/movable/AM, atom/target, turf/aimloc)
var/obj/item/device/flashlight/flare/fired = AM
fired.ignite()
@@ -249,13 +257,13 @@
var/primed = null
throwforce = 15
throw_impact(atom/hit_atom)
if(primed)
explosion(hit_atom, 0, 1, 2, 4)
qdel(src)
else
..()
return
/obj/item/missile/throw_impact(atom/hit_atom)
if(primed)
explosion(hit_atom, 0, 1, 2, 4)
qdel(src)
else
..()
return
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/flashbang
name = "\improper SGL-6 grenade launcher"
@@ -320,6 +328,7 @@
/obj/item/mecha_parts/mecha_equipment/weapon/energy/flamer/rigged
name = "\improper AA-CR-1 Mark 4"
description_fluff = "A firefighting tool maintained by Aether Atmospherics, whose initial design originated from a small Earth company. This one seems to have been jury rigged."
icon_state = "mecha_cremate-rig"
energy_drain = 50
required_type = list(/obj/mecha/combat, /obj/mecha/working)
@@ -328,6 +337,8 @@
origin_tech = list(TECH_MATERIAL = 3, TECH_COMBAT = 3, TECH_PHORON = 3, TECH_ILLEGAL = 2)
equip_type = EQUIP_UTILITY
//////////////
//Defensive//
//////////////
@@ -343,6 +354,8 @@
var/shock_damage = 15
var/active
equip_type = EQUIP_HULL
/obj/item/mecha_parts/mecha_equipment/shocker/can_attach(obj/mecha/M as obj)
if(..())
if(!M.proc_res["dynattackby"] && !M.proc_res["dynattackhand"] && !M.proc_res["dynattackalien"])

View File

@@ -24,6 +24,7 @@
var/dir_in = 2//What direction will the mech face when entered/powered on? Defaults to South.
var/step_energy_drain = 10
var/health = 300 //health is health
var/maxhealth = 300 //maxhealth is maxhealth.
var/deflect_chance = 10 //chance to deflect the incoming projectiles, hits, or lesser the effect of ex_act.
//the values in this list show how much damage will pass through, not how much will be absorbed.
var/list/damage_absorption = list("brute"=0.8,"fire"=1.2,"bullet"=0.9,"laser"=1,"energy"=1,"bomb"=1)
@@ -66,8 +67,23 @@
var/list/equipment = new
var/obj/item/mecha_parts/mecha_equipment/selected
var/max_equip = 3
var/max_equip = 2
var/datum/events/events
//mechaequipt2 stuffs
var/list/hull_equipment = new
var/list/weapon_equipment = new
var/list/utility_equipment = new
var/list/universal_equipment = new
var/list/special_equipment = new
var/max_hull_equip = 2
var/max_weapon_equip = 2
var/max_utility_equip = 2
var/max_universal_equip = 2
var/max_special_equip = 1
//Working exosuit vars
var/list/cargo = list()
var/cargo_capacity = 3
/obj/mecha/drain_power(var/drain_check)
@@ -99,10 +115,24 @@
mechas_list += src //global mech list
return
/obj/mecha/Exit(atom/movable/O)
if(O in cargo)
return 0
return ..()
/obj/mecha/Destroy()
src.go_out()
for(var/mob/M in src) //Let's just be ultra sure
M.Move(loc)
for(var/mob/M in src) //Be Extra Sure
M.forceMove(get_turf(src))
M.loc.Entered(M)
if(M != src.occupant)
step_rand(M)
for(var/atom/movable/A in src.cargo)
A.forceMove(get_turf(src))
var/turf/T = get_turf(A)
if(T)
T.Entered(A)
step_rand(A)
if(loc)
loc.Exited(src)
@@ -112,6 +142,11 @@
if(wreckage)
var/obj/effect/decal/mecha_wreckage/WR = new wreckage(loc)
hull_equipment.Cut()
weapon_equipment.Cut()
utility_equipment.Cut()
universal_equipment.Cut()
special_equipment.Cut()
for(var/obj/item/mecha_parts/mecha_equipment/E in equipment)
if(E.salvageable && prob(30))
WR.crowbar_salvage += E
@@ -1348,6 +1383,14 @@
<b>Lights: </b>[lights?"on":"off"]<br>
[src.dna?"<b>DNA-locked:</b><br> <span style='font-size:10px;letter-spacing:-1px;'>[src.dna]</span> \[<a href='?src=\ref[src];reset_dna=1'>Reset</a>\]<br>":null]
"}
//Cargo components.
output += "<b>Cargo Compartment Contents:</b><div style=\"margin-left: 15px;\">"
if(src.cargo.len)
for(var/obj/O in src.cargo)
output += "<a href='?src=\ref[src];drop_from_cargo=\ref[O]'>Unload</a> : [O]<br>"
else
output += "Nothing"
output += "</div>"
return output
/obj/mecha/proc/get_commands()
@@ -1396,10 +1439,23 @@
output += {"<div class='wr'>
<div class='header'>Equipment</div>
<div class='links'>"}
for(var/obj/item/mecha_parts/mecha_equipment/W in equipment)
output += "[W.name] <a href='?src=\ref[W];detach=1'>Detach</a><br>"
output += "<b>Available equipment slots:</b> [max_equip-equipment.len]"
output += "</div></div>"
for(var/obj/item/mecha_parts/mecha_equipment/W in hull_equipment)
output += "Hull Module: [W.name] <a href='?src=\ref[W];detach=1'>Detach</a><br>"
for(var/obj/item/mecha_parts/mecha_equipment/W in weapon_equipment)
output += "Weapon Module: [W.name] <a href='?src=\ref[W];detach=1'>Detach</a><br>"
for(var/obj/item/mecha_parts/mecha_equipment/W in utility_equipment)
output += "Utility Module: [W.name] <a href='?src=\ref[W];detach=1'>Detach</a><br>"
for(var/obj/item/mecha_parts/mecha_equipment/W in universal_equipment)
output += "Universal Module: [W.name] <a href='?src=\ref[W];detach=1'>Detach</a><br>"
for(var/obj/item/mecha_parts/mecha_equipment/W in special_equipment)
output += "Special Module: [W.name] <a href='?src=\ref[W];detach=1'>Detach</a><br>"
output += {"<b>Available hull slots:</b> [max_hull_equip-hull_equipment.len]<br>
<b>Available weapon slots:</b> [max_weapon_equip-weapon_equipment.len]<br>
<b>Available utility slots:</b> [max_utility_equip-utility_equipment.len]<br>
<b>Available universal slots:</b> [max_universal_equip-universal_equipment.len]<br>
<b>Available special slots:</b> [max_special_equip-special_equipment.len]<br>
</div></div>
"}
return output
/obj/mecha/proc/get_equipment_list() //outputs mecha equipment list in html
@@ -1673,6 +1729,17 @@
else
src.occupant_message("<font color='red'>Recalibration failed.</font>")
src.log_message("Recalibration of coordination system failed with 1 error.",1)
if(href_list["drop_from_cargo"])
var/obj/O = locate(href_list["drop_from_cargo"])
if(O && O in src.cargo)
src.occupant_message("<span class='notice'>You unload [O].</span>")
O.forceMove(get_turf(src))
src.cargo -= O
var/turf/T = get_turf(O)
if(T)
T.Entered(O)
src.log_message("Unloaded [O]. Cargo compartment capacity: [cargo_capacity - src.cargo.len]")
return
//debug
/*

View File

@@ -1,3 +1,12 @@
/obj/mecha/medical
max_hull_equip = 1
max_weapon_equip = 0
max_utility_equip = 2
max_universal_equip = 1
max_special_equip = 1
cargo_capacity = 1
/obj/mecha/medical/initialize()
. = ..()
var/turf/T = get_turf(src)

View File

@@ -1,4 +1,4 @@
/obj/mecha/medical/odysseus
/obj/mecha/medical/odysseus/
desc = "These exosuits are developed and produced by Vey-Med. (&copy; All rights reserved)."
name = "Odysseus"
icon_state = "odysseus"
@@ -6,36 +6,37 @@
step_in = 2
max_temperature = 15000
health = 120
maxhealth = 120
wreckage = /obj/effect/decal/mecha_wreckage/odysseus
internal_damage_threshold = 35
deflect_chance = 15
step_energy_drain = 6
var/obj/item/clothing/glasses/hud/health/mech/hud
New()
..()
hud = new /obj/item/clothing/glasses/hud/health/mech(src)
return
/obj/mecha/medical/odysseus/New()
..()
hud = new /obj/item/clothing/glasses/hud/health/mech(src)
return
moved_inside(var/mob/living/carbon/human/H as mob)
if(..())
if(H.glasses)
occupant_message("<font color='red'>[H.glasses] prevent you from using [src] [hud]</font>")
else
H.glasses = hud
H.recalculate_vis()
return 1
/obj/mecha/medical/odysseus/moved_inside(var/mob/living/carbon/human/H as mob)
if(..())
if(H.glasses)
occupant_message("<font color='red'>[H.glasses] prevent you from using [src] [hud]</font>")
else
return 0
H.glasses = hud
H.recalculate_vis()
return 1
else
return 0
go_out()
if(ishuman(occupant))
var/mob/living/carbon/human/H = occupant
if(H.glasses == hud)
H.glasses = null
H.recalculate_vis()
..()
return
/obj/mecha/medical/odysseus/go_out()
if(ishuman(occupant))
var/mob/living/carbon/human/H = occupant
if(H.glasses == hud)
H.glasses = null
H.recalculate_vis()
..()
return
/*
verb/set_perspective()
set name = "Set client perspective."

View File

@@ -8,6 +8,7 @@
step_energy_drain = 10
max_temperature = 20000
health = 150
maxhealth = 150
infra_luminosity = 6
wreckage = /obj/effect/decal/mecha_wreckage/hoverpod
cargo_capacity = 5
@@ -15,6 +16,12 @@
var/datum/effect/effect/system/ion_trail_follow/ion_trail
var/stabilization_enabled = 1
max_hull_equip = 2
max_weapon_equip = 0
max_utility_equip = 2
max_universal_equip = 1
max_special_equip = 1
/obj/mecha/working/hoverpod/New()
..()
ion_trail = new /datum/effect/effect/system/ion_trail_follow()
@@ -51,7 +58,7 @@
ion_trail.start()
if (stabilization_enabled)
return 1
return ..()
//these three procs overriden to play different sounds
@@ -79,9 +86,15 @@
desc = "An ancient, run-down combat spacecraft." // Ideally would have a seperate icon.
name = "Combat Hoverpod"
health = 200
maxhealth = 200
internal_damage_threshold = 35
cargo_capacity = 2
max_equip = 2
max_hull_equip = 2
max_weapon_equip = 2
max_utility_equip = 2
max_universal_equip = 1
max_special_equip = 1
/obj/mecha/working/hoverpod/combatpod/New()
..()

View File

@@ -6,6 +6,7 @@
step_in = 6
max_temperature = 20000
health = 200
maxhealth = 200
wreckage = /obj/effect/decal/mecha_wreckage/ripley
cargo_capacity = 10
@@ -20,7 +21,7 @@
..()
/obj/mecha/working/ripley/firefighter
desc = "Standart APLU chassis was refitted with additional thermal protection and cistern."
desc = "Standard APLU chassis was refitted with additional thermal protection and cistern."
name = "APLU \"Firefighter\""
icon_state = "firefighter"
initial_icon = "firefighter"
@@ -29,6 +30,11 @@
lights_power = 8
damage_absorption = list("fire"=0.5,"bullet"=0.8,"bomb"=0.5)
wreckage = /obj/effect/decal/mecha_wreckage/ripley/firefighter
max_hull_equip = 2
max_weapon_equip = 0
max_utility_equip = 2
max_universal_equip = 1
max_special_equip = 1
/obj/mecha/working/ripley/deathripley
desc = "OH SHIT IT'S THE DEATHSQUAD WE'RE ALL GONNA DIE"
@@ -40,6 +46,11 @@
lights_power = 60
wreckage = /obj/effect/decal/mecha_wreckage/ripley/deathripley
step_energy_drain = 0
max_hull_equip = 1
max_weapon_equip = 1
max_utility_equip = 3
max_universal_equip = 1
max_special_equip = 1
/obj/mecha/working/ripley/deathripley/New()
..()

View File

@@ -1,7 +1,10 @@
/obj/mecha/working
internal_damage_threshold = 60
var/list/cargo = new
var/cargo_capacity = 5
max_hull_equip = 1
max_weapon_equip = 0
max_utility_equip = 3
max_universal_equip = 1
max_special_equip = 1
/obj/mecha/working/initialize()
. = ..()
@@ -9,6 +12,7 @@
if(isPlayerLevel(T.z))
new /obj/item/mecha_parts/mecha_tracking(src)
/* This stuff has been generalized!
/obj/mecha/working/Destroy()
for(var/mob/M in src)
if(M==src.occupant)
@@ -54,6 +58,6 @@
output += "Nothing"
output += "</div>"
return output
*/
/obj/mecha/working/range_action(atom/target as obj|mob|turf)
return

View File

@@ -0,0 +1,7 @@
author: Mechoid
delete-after: True
changes:
- rscadd: "Mechs now have multiple equipment slot types, and more slots in total for greater customization."

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 24 KiB