Sidewinder Again: Now With Sprites! (#18007)

* AND WE'RE BACK

* SO MUCH SIMPLER

* better facing

* Update mecha.dm

* SPACES?

* e

* construction time

hopefully

* haha oops

* e

* SPRITED

* Gets rid of useless thing

* Update all_nodes.dm
This commit is contained in:
Mqiib
2023-02-23 18:26:36 -05:00
committed by GitHub
parent f610a2b381
commit caf9257395
15 changed files with 381 additions and 18 deletions

View File

@@ -414,8 +414,8 @@ def parse_multirow(var_name, var_value, details, multirows_completed):
keys.append(var_name)
multirows_completed += keys
return details
elif var_name in ("mecha_durand_created", "mecha_firefighter_created", "mecha_gygax_created", "mecha_honker_created", "mecha_odysseus_created", "mecha_phazon_created", "mecha_ripley_created"):
mecha_vars ={"mecha_durand_created":"Durand", "mecha_firefighter_created":"APLU \"Firefighter\"", "mecha_gygax_created":"Gygax", "mecha_honker_created":"H.O.N.K", "mecha_odysseus_created":"Odysseus", "mecha_phazon_created":"Phazon", "mecha_ripley_created":"APLU \"Ripley\""}
elif var_name in ("mecha_durand_created", "mecha_firefighter_created", "mecha_gygax_created", "mecha_honker_created", "mecha_odysseus_created", "mecha_phazon_created", "mecha_ripley_created", "mecha_sidewinder_created"):
mecha_vars ={"mecha_durand_created":"Durand", "mecha_firefighter_created":"APLU \"Firefighter\"", "mecha_gygax_created":"Gygax", "mecha_honker_created":"H.O.N.K", "mecha_odysseus_created":"Odysseus", "mecha_phazon_created":"Phazon", "mecha_ripley_created":"APLU \"Ripley\"", "mecha_sidewinder_created":"Sidewinder"}
details = {mecha_vars[var_name]:var_value}
del mecha_vars[var_name]
query_where = "round_id = {0} AND (".format(query_row[2])
@@ -460,8 +460,8 @@ simple_tallies = ["admin_secrets_fun_used", "admin_verb", "assembly_made", "brot
nested_tallies = ["admin_toggle", "cargo_imports", "changeling_objective", "changeling_powers", "cult_objective", "export_sold_cost", "hivelord_core", "item_used_for_combat", "job_preferences", "mining_equipment_bought", "played_url", "preferences_verb", "testmerged_prs", "traitor_objective", "traitor_uplink_items_bought", "vending_machine_usage", "wizard_objective", "wizard_spell_improved"]
associatives = ["colonies_dropped", "commendation", "high_research_level"]
special_cases = ["immortality_talisman", "newscaster_channels", "radio_usage", "shuttle_gib", "slime_babies_born", "slime_core_harvested"]
multirow = ["ahelp_close", "ahelp_icissue", "ahelp_reject", "ahelp_reopen", "ahelp_resolve", "ahelp_unresolved", "alert_comms_blue", "alert_comms_green", "alert_keycard_auth_bsa", "alert_keycard_auth_maint", "arcade_loss_hp_emagged", "arcade_loss_hp_normal", "arcade_loss_mana_emagged", "arcade_loss_mana_normal", "arcade_win_emagged", "arcade_win_normal", "cyborg_engineering", "cyborg_janitor", "cyborg_medical", "cyborg_miner", "cyborg_peacekeeper", "cyborg_security", "cyborg_service", "cyborg_standard", "escaped_human", "escaped_total", "mecha_durand_created", "mecha_firefighter_created", "mecha_gygax_created", "mecha_honker_created", "mecha_odysseus_created", "mecha_phazon_created", "mecha_ripley_created", "round_end_clients", "round_end_ghosts", "survived_human", "survived_total"]
renames = {"ahelp_stats":["ahelp_close", "ahelp_icissue", "ahelp_reject", "ahelp_reopen", "ahelp_resolve", "ahelp_unresolved"], "ais_created":["cyborg_ais_created"], "arcade_results":["arcade_loss_hp_emagged", "arcade_loss_hp_normal", "arcade_loss_mana_emagged", "arcade_loss_mana_normal", "arcade_win_emagged", "arcade_win_normal"], "cyborg_modules":["cyborg_engineering", "cyborg_janitor", "cyborg_medical", "cyborg_miner", "cyborg_peacekeeper", "cyborg_security", "cyborg_service", "cyborg_standard"], "immortality_talisman_uses":["immortality_talisman"], "keycard_auths":["alert_keycard_auth_bsa", "alert_keycard_auth_maint"], "mechas_created":["mecha_durand_created", "mecha_firefighter_created", "mecha_gygax_created", "mecha_honker_created", "mecha_odysseus_created", "mecha_phazon_created", "mecha_ripley_created"], "mmis_filled":["cyborg_mmis_filled"], "newspapers_printed":["newscaster_newspapers_printed"], "round_end_stats":["escaped_human", "escaped_total", "round_end_clients", "round_end_ghosts", "survived_human", "survived_total"], "security_level_changes":["alert_comms_blue", "alert_comms_green"]}
multirow = ["ahelp_close", "ahelp_icissue", "ahelp_reject", "ahelp_reopen", "ahelp_resolve", "ahelp_unresolved", "alert_comms_blue", "alert_comms_green", "alert_keycard_auth_bsa", "alert_keycard_auth_maint", "arcade_loss_hp_emagged", "arcade_loss_hp_normal", "arcade_loss_mana_emagged", "arcade_loss_mana_normal", "arcade_win_emagged", "arcade_win_normal", "cyborg_engineering", "cyborg_janitor", "cyborg_medical", "cyborg_miner", "cyborg_peacekeeper", "cyborg_security", "cyborg_service", "cyborg_standard", "escaped_human", "escaped_total", "mecha_durand_created", "mecha_firefighter_created", "mecha_gygax_created", "mecha_honker_created", "mecha_odysseus_created", "mecha_phazon_created", "mecha_ripley_created", "mecha_sidewinder_created", "round_end_clients", "round_end_ghosts", "survived_human", "survived_total"]
renames = {"ahelp_stats":["ahelp_close", "ahelp_icissue", "ahelp_reject", "ahelp_reopen", "ahelp_resolve", "ahelp_unresolved"], "ais_created":["cyborg_ais_created"], "arcade_results":["arcade_loss_hp_emagged", "arcade_loss_hp_normal", "arcade_loss_mana_emagged", "arcade_loss_mana_normal", "arcade_win_emagged", "arcade_win_normal"], "cyborg_modules":["cyborg_engineering", "cyborg_janitor", "cyborg_medical", "cyborg_miner", "cyborg_peacekeeper", "cyborg_security", "cyborg_service", "cyborg_standard"], "immortality_talisman_uses":["immortality_talisman"], "keycard_auths":["alert_keycard_auth_bsa", "alert_keycard_auth_maint"], "mechas_created":["mecha_durand_created", "mecha_firefighter_created", "mecha_gygax_created", "mecha_honker_created", "mecha_odysseus_created", "mecha_phazon_created", "mecha_ripley_created", "mecha_sidewinder_created"], "mmis_filled":["cyborg_mmis_filled"], "newspapers_printed":["newscaster_newspapers_printed"], "round_end_stats":["escaped_human", "escaped_total", "round_end_clients", "round_end_ghosts", "survived_human", "survived_total"], "security_level_changes":["alert_comms_blue", "alert_comms_green"]}
key_types = {"amount":["ais_created", "immortality_talisman_uses", "mmis_filled", "newspapers_printed", "admin_cookies_spawned", "cyborg_frames_built", "newscaster_stories", "nuclear_challenge_mode"],
"associative":["colonies_dropped", "commendation", "high_research_level"],
"nested tally":["admin_toggle", "arcade_results", "cargo_imports", "changeling_objective", "changeling_powers", "cult_objective", "export_sold_cost", "hivelord_core", "item_used_for_combat", "job_preferences", "keycard_auths", "mining_equipment_bought", "played_url", "preferences_verb", "round_end_stats", "testmerged_prs", "traitor_objective", "traitor_uplink_items_bought", "vending_machine_usage", "wizard_objective", "wizard_spell_improved"],

View File

@@ -23,10 +23,12 @@
#define EXOSUIT_MODULE_HONK (1<<5)
/// Module is compatible with Phazon Exosuit models
#define EXOSUIT_MODULE_PHAZON (1<<6)
/// Module is compatible with Sidewinder Exosuit models
#define EXOSUIT_MODULE_SIDEWINDER (1<<7)
/// Module is compatible with "Working" Exosuit models - Ripley and Firefighter
#define EXOSUIT_MODULE_WORKING EXOSUIT_MODULE_RIPLEY | EXOSUIT_MODULE_FIREFIGHTER
/// Module is compatible with "Combat" Exosuit models - Gygax, H.O.N.K, Durand and Phazon
#define EXOSUIT_MODULE_COMBAT EXOSUIT_MODULE_GYGAX | EXOSUIT_MODULE_HONK | EXOSUIT_MODULE_DURAND | EXOSUIT_MODULE_PHAZON
/// Module is compatible with "Combat" Exosuit models - Gygax, H.O.N.K, Durand, Phazon, and Sidewinder
#define EXOSUIT_MODULE_COMBAT EXOSUIT_MODULE_GYGAX | EXOSUIT_MODULE_HONK | EXOSUIT_MODULE_DURAND | EXOSUIT_MODULE_PHAZON | EXOSUIT_MODULE_SIDEWINDER
/// Module is compatible with "Medical" Exosuit modelsm - Odysseus
#define EXOSUIT_MODULE_MEDICAL EXOSUIT_MODULE_ODYSSEUS

View File

@@ -0,0 +1,45 @@
/obj/mecha/combat/sidewinder
desc = "A squat, nimble, and rather confining exosuit taking advantage of advanced synthetic muscles to move around. Originally used for entertainment in mech \"sports\", many have found it to be well-suited for more practical applications."
name = "\improper Sidewinder"
icon_state = "sidewinder"
step_in = 2.5 //Faster than a gygax
dir_in = 1 //Facing North.
force = 15
max_integrity = 200
deflect_chance = 10
armor = list(MELEE = 40, BULLET = 20, LASER = 20, ENERGY = 15, BOMB = 40, BIO = 100, RAD = 75, FIRE = 100, ACID = 100) //Good for harsh environments, less good vs gun
max_temperature = 25000
infra_luminosity = 6
wreckage = /obj/structure/mecha_wreckage/sidewinder
internal_damage_threshold = 25 //Reinforced internal components
max_equip = 3
step_energy_drain = 3
guns_allowed = FALSE //Melee only
omnidirectional_attacks = TRUE //Thus the name
melee_cooldown = 7
turnsound = 'sound/mecha/mechmove01.ogg'
/obj/mecha/combat/sidewinder/click_action(atom/target,mob/user,params)
//Check all this stuff because this has to happen BEFORE we call the parent so that we can sword in the right direction
if(!occupant || occupant != user ) //No pilot
return
if(!locate(/turf) in list(target,target.loc)) //Prevents inventory from being drilled
return
if(user.incapacitated()) //Pilot can't move
return
if(completely_disabled || is_currently_ejecting) //mech can't move
return
if(state) //Maintenance mode, can't move
occupant_message(span_warning("Maintenance protocols in effect."))
return
if(!get_charge()) //No power, can't move
return
if(src == target) //We can't face ourselves
return
if(!equipment_disabled) //EMP will disable the turning temporarily
var/initial_direction = dir
face_atom(target)
var/new_direction = dir
if(initial_direction != new_direction) //Make sure we actually turned
playsound(src,'sound/mecha/mechmove01.ogg',40,1)
return ..()

View File

@@ -62,6 +62,7 @@
"Durand",
"H.O.N.K",
"Phazon",
"Sidewinder",
"Exosuit Equipment",
"Exosuit Ammunition",
"Cyborg Upgrade Modules",
@@ -252,6 +253,8 @@
category_override += "H.O.N.K"
if(mech_types & EXOSUIT_MODULE_PHAZON)
category_override += "Phazon"
if(mech_types & EXOSUIT_MODULE_SIDEWINDER)
category_override += "Sidewinder"
var/list/part = list(

View File

@@ -526,14 +526,14 @@
user.visible_message("[user] cuts the internal armor layer from [parent].", span_notice("You cut the internal armor layer from [parent]."))
if(21)
if(diff==FORWARD)
user.visible_message("[user] secures Gygax Armor Plates.", span_notice("You secure Gygax Armor Plates."))
user.visible_message("[user] secures the Gygax Armor Plates.", span_notice("You secure the Gygax Armor Plates."))
else
user.visible_message("[user] pries Gygax Armor Plates from [parent].", span_notice("You pry Gygax Armor Plates from [parent]."))
user.visible_message("[user] pries the Gygax Armor Plates from [parent].", span_notice("You pry the Gygax Armor Plates from [parent]."))
if(22)
if(diff==FORWARD)
user.visible_message("[user] welds Gygax Armor Plates to [parent].", span_notice("You weld Gygax Armor Plates to [parent]."))
user.visible_message("[user] welds the Gygax Armor Plates to [parent].", span_notice("You weld the Gygax Armor Plates to [parent]."))
else
user.visible_message("[user] unfastens Gygax Armor Plates.", span_notice("You unfasten Gygax Armor Plates."))
user.visible_message("[user] unfastens the Gygax Armor Plates.", span_notice("You unfasten the Gygax Armor Plates."))
return TRUE
/datum/component/construction/unordered/mecha_chassis/firefighter
@@ -1105,14 +1105,14 @@
user.visible_message("[user] cuts the internal armor layer from [parent].", span_notice("You cut the internal armor layer from [parent]."))
if(21)
if(diff==FORWARD)
user.visible_message("[user] secures Durand Armor Plates.", span_notice("You secure Durand Armor Plates."))
user.visible_message("[user] secures the Durand Armor Plates.", span_notice("You secure the Durand Armor Plates."))
else
user.visible_message("[user] pries Durand Armor Plates from [parent].", span_notice("You pry Durand Armor Plates from [parent]."))
user.visible_message("[user] pries the Durand Armor Plates from [parent].", span_notice("You pry the the Durand Armor Plates from [parent]."))
if(22)
if(diff==FORWARD)
user.visible_message("[user] welds Durand Armor Plates to [parent].", span_notice("You weld Durand Armor Plates to [parent]."))
user.visible_message("[user] welds the Durand Armor Plates to [parent].", span_notice("You weld the Durand Armor Plates to [parent]."))
else
user.visible_message("[user] unfastens Durand Armor Plates.", span_notice("You unfasten Durand Armor Plates."))
user.visible_message("[user] unfastens the Durand Armor Plates.", span_notice("You unfasten the Durand Armor Plates."))
return TRUE
//PHAZON
@@ -1347,14 +1347,14 @@
user.visible_message("[user] cuts phase armor layer from [parent].", span_notice("You cut the phase armor layer from [parent]."))
if(24)
if(diff==FORWARD)
user.visible_message("[user] secures Phazon Armor Plates.", span_notice("You secure Phazon Armor Plates."))
user.visible_message("[user] secures the Phazon Armor Plates.", span_notice("You secure the Phazon Armor Plates."))
else
user.visible_message("[user] pries Phazon Armor Plates from [parent].", span_notice("You pry Phazon Armor Plates from [parent]."))
user.visible_message("[user] pries the Phazon Armor Plates from [parent].", span_notice("You pry the Phazon Armor Plates from [parent]."))
if(25)
if(diff==FORWARD)
user.visible_message("[user] welds Phazon Armor Plates to [parent].", span_notice("You weld Phazon Armor Plates to [parent]."))
user.visible_message("[user] welds the Phazon Armor Plates to [parent].", span_notice("You weld the Phazon Armor Plates to [parent]."))
else
user.visible_message("[user] unfastens Phazon Armor Plates.", span_notice("You unfasten Phazon Armor Plates."))
user.visible_message("[user] unfastens the Phazon Armor Plates.", span_notice("You unfasten the Phazon Armor Plates."))
if(26)
if(diff==FORWARD)
user.visible_message("[user] carefully inserts the anomaly core into [parent] and secures it.",
@@ -1491,3 +1491,145 @@
else
user.visible_message("[user] unfastens the external armor layer.", span_notice("You unfasten the external armor layer."))
return TRUE
/datum/component/construction/unordered/mecha_chassis/sidewinder
result = /datum/component/construction/mecha/sidewinder
steps = list(
/obj/item/mecha_parts/part/sidewinder_torso,
/obj/item/mecha_parts/part/sidewinder_left_arm,
/obj/item/mecha_parts/part/sidewinder_right_arm,
/obj/item/mecha_parts/part/sidewinder_left_leg,
/obj/item/mecha_parts/part/sidewinder_right_leg,
/obj/item/mecha_parts/part/sidewinder_head
)
/datum/component/construction/mecha/sidewinder
result = /obj/mecha/combat/sidewinder
base_icon = "sidewinder"
circuit_control = /obj/item/circuitboard/mecha/sidewinder/main
circuit_periph = /obj/item/circuitboard/mecha/sidewinder/peripherals
circuit_weapon = /obj/item/circuitboard/mecha/sidewinder/targeting
inner_plating = /obj/item/stack/sheet/mineral/plastitanium
inner_plating_amount = 5
outer_plating=/obj/item/mecha_parts/part/sidewinder_armor
outer_plating_amount=1
/datum/component/construction/mecha/sidewinder/action(datum/source, atom/used_atom, mob/user)
return check_step(used_atom,user)
/datum/component/construction/mecha/sidewinder/custom_action(obj/item/I, mob/living/user, diff)
if(!..())
return FALSE
switch(index)
if(1)
user.visible_message("[user] connects [parent] synthetic muscle systems", span_notice("You connect [parent] synthetic muscle systems."))
if(2)
if(diff==FORWARD)
user.visible_message("[user] activates [parent] synthetic muscle systems.", span_notice("You activate [parent] synthetic muscle systems."))
else
user.visible_message("[user] disconnects [parent] synthetic muscle systems", span_notice("You disconnect [parent] synthetic muscle systems."))
if(3)
if(diff==FORWARD)
user.visible_message("[user] adds the wiring to [parent].", span_notice("You add the wiring to [parent]."))
else
user.visible_message("[user] deactivates [parent] synthetic muscle systems.", span_notice("You deactivate [parent] synthetic muscle systems."))
if(4)
if(diff==FORWARD)
user.visible_message("[user] adjusts the wiring of [parent].", span_notice("You adjust the wiring of [parent]."))
else
user.visible_message("[user] removes the wiring from [parent].", span_notice("You remove the wiring from [parent]."))
if(5)
if(diff==FORWARD)
user.visible_message("[user] installs [I] into [parent].", span_notice("You install [I] into [parent]."))
else
user.visible_message("[user] disconnects the wiring of [parent].", span_notice("You disconnect the wiring of [parent]."))
if(6)
if(diff==FORWARD)
user.visible_message("[user] secures the mainboard.", span_notice("You secure the mainboard."))
else
user.visible_message("[user] removes the central control module from [parent].", span_notice("You remove the central computer mainboard from [parent]."))
if(7)
if(diff==FORWARD)
user.visible_message("[user] installs [I] into [parent].", span_notice("You install [I] into [parent]."))
else
user.visible_message("[user] unfastens the mainboard.", span_notice("You unfasten the mainboard."))
if(8)
if(diff==FORWARD)
user.visible_message("[user] secures the peripherals control module.", span_notice("You secure the peripherals control module."))
else
user.visible_message("[user] removes the peripherals control module from [parent].", span_notice("You remove the peripherals control module from [parent]."))
if(9)
if(diff==FORWARD)
user.visible_message("[user] installs [I] into [parent].", span_notice("You install [I] into [parent]."))
else
user.visible_message("[user] unfastens the peripherals control module.", span_notice("You unfasten the peripherals control module."))
if(10)
if(diff==FORWARD)
user.visible_message("[user] secures the kinetics control module.", span_notice("You secure the kinetics control module."))
else
user.visible_message("[user] removes the kinetics control module from [parent].", span_notice("You remove the kinetics control module from [parent]."))
if(11)
if(diff==FORWARD)
user.visible_message("[user] installs [I] to [parent].", span_notice("You install [I] to [parent]."))
else
user.visible_message("[user] unfastens the kinetics control module.", span_notice("You unfasten the kinetics control module."))
if(12)
if(diff==FORWARD)
user.visible_message("[user] secures the scanner module.", span_notice("You secure the scanner module."))
else
user.visible_message("[user] removes the scanner module from [parent].", span_notice("You remove the scanner module from [parent]."))
if(13)
if(diff==FORWARD)
user.visible_message("[user] installs [I] to [parent].", span_notice("You install [I] to [parent]."))
else
user.visible_message("[user] unfastens the scanner module.", span_notice("You unfasten the scanner module."))
if(14)
if(diff==FORWARD)
user.visible_message("[user] secures the capacitor.", span_notice("You secure the capacitor."))
else
user.visible_message("[user] removes the capacitor from [parent].", span_notice("You remove the capacitor from [parent]."))
if(15)
if(diff==FORWARD)
user.visible_message("[user] installs [I] into [parent].", span_notice("You install [I] into [parent]."))
else
user.visible_message("[user] unfastens the capacitor.", span_notice("You unfasten the capacitor."))
if(16)
if(diff==FORWARD)
user.visible_message("[user] secures the power cell.", span_notice("You secure the power cell."))
else
user.visible_message("[user] pries the power cell from [parent].", span_notice("You pry the power cell from [parent]."))
if(17)
if(diff==FORWARD)
user.visible_message("[user] installs the internal armor layer to [parent].", span_notice("You install the internal armor layer to [parent]."))
else
user.visible_message("[user] unfastens the power cell.", span_notice("You unfasten the power cell."))
if(18)
if(diff==FORWARD)
user.visible_message("[user] secures the internal armor layer.", span_notice("You secure the internal armor layer."))
else
user.visible_message("[user] pries internal armor layer from [parent].", span_notice("You pry internal armor layer from [parent]."))
if(19)
if(diff==FORWARD)
user.visible_message("[user] welds the internal armor layer to [parent].", span_notice("You weld the internal armor layer to [parent]."))
else
user.visible_message("[user] unfastens the internal armor layer.", span_notice("You unfasten the internal armor layer."))
if(20)
if(diff==FORWARD)
user.visible_message("[user] installs [I] to [parent].", span_notice("You install [I] to [parent]."))
else
user.visible_message("[user] cuts the internal armor layer from [parent].", span_notice("You cut the internal armor layer from [parent]."))
if(21)
if(diff==FORWARD)
user.visible_message("[user] secures the Sidewinder Armor Plates.", span_notice("You secure the Sidewinder Armor Plates."))
else
user.visible_message("[user] pries the Sidewinder Armor Plates from [parent].", span_notice("You pry the Sidewinder Armor Plates from [parent]."))
if(22)
if(diff==FORWARD)
user.visible_message("[user] welds the Sidewinder Armor Plates to [parent].", span_notice("You weld the Sidewinder Armor Plates to [parent]."))
else
user.visible_message("[user] unfastens the Sidewinder Armor Plates.", span_notice("You unfasten the Sidewinder Armor Plates."))
return TRUE

View File

@@ -299,6 +299,49 @@
icon_state = "phazon_armor"
///////// sidewinder
/obj/item/mecha_parts/chassis/sidewinder
name = "\improper Sidewinder chassis"
construct_type = /datum/component/construction/unordered/mecha_chassis/sidewinder
/obj/item/mecha_parts/part/sidewinder_torso
name = "\improper Sidewinder torso"
desc = "A Sidewinder torso part. Contains a light power unit, processing units, and life support systems."
icon_state = "sidewinder_harness"
/obj/item/mecha_parts/part/sidewinder_head
name = "\improper Sidewinder head"
desc = "A Sidewinder head. A light armor shell houses advanced surveillance and environmental sensors."
icon_state = "sidewinder_head"
/obj/item/mecha_parts/part/sidewinder_left_arm
name = "\improper Sidewinder left arm"
desc = "A Sidewinder left arm. Data and power sockets are compatible with most exosuit tools and it has the dexterity to use them effectively."
icon_state = "sidewinder_l_arm"
/obj/item/mecha_parts/part/sidewinder_right_arm
name = "\improper Sidewinder right arm"
desc = "A Sidewinder right arm. Data and power sockets are compatible with most exosuit tools and it has the dexterity to use them effectively."
icon_state = "sidewinder_r_arm"
/obj/item/mecha_parts/part/sidewinder_left_leg
name = "\improper Sidewinder left leg"
desc = "A Sidewinder left leg. Wrapped in advanced synthetic muscle fibers, it grants remarkable agility to the exosuit."
icon_state = "sidewinder_l_leg"
/obj/item/mecha_parts/part/sidewinder_right_leg
name = "\improper Sidewinder right leg"
desc = "A sidewinder right leg. Wrapped in advanced synthetic muscle fibers, it grants remarkable agility to the exosuit."
icon_state = "sidewinder_r_leg"
/obj/item/mecha_parts/part/sidewinder_armor
gender = PLURAL
name = "\improper Sidewinder armor plates"
desc = "A set of armor plates designed for the Sidewinder. They act as a thin shell to protect the most vulnerable areas without limiting mobility."
icon_state = "sidewinder_armor"
///////// Circuitboards
/obj/item/circuitboard/mecha
@@ -386,3 +429,15 @@
/obj/item/circuitboard/mecha/clarke/main
name = "Clarke Central Control module (Exosuit Board)"
icon_state = "mainboard"
/obj/item/circuitboard/mecha/sidewinder/peripherals
name = "Sidewinder Peripherals Control module (Exosuit Board)"
icon_state = "mcontroller"
/obj/item/circuitboard/mecha/sidewinder/targeting
name = "Sidewinder Kinetics and Mobility Control module (Exosuit Board)"
icon_state = "mcontroller"
/obj/item/circuitboard/mecha/sidewinder/main
name = "Sidewinder Central Control module (Exosuit Board)"
icon_state = "mainboard"

View File

@@ -227,3 +227,8 @@
name = "\improper Odysseus wreckage"
icon_state = "odysseus-broken"
orig_mecha = /obj/mecha/medical/odysseus
/obj/structure/mecha_wreckage/sidewinder
name = "\improper Sidewinder wreckage"
icon_state = "sidewinder-broken"
orig_mecha = /obj/mecha/combat/sidewinder

View File

@@ -149,6 +149,30 @@
category = list("Exosuit Modules")
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
/datum/design/board/sidewinder_main
name = "\"Sidewinder\" Central Control module"
desc = "Allows for the construction of a \"Sidewinder\" Central Control module."
id = "sidewinder_main"
build_path = /obj/item/circuitboard/mecha/sidewinder/main
category = list("Exosuit Modules")
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
/datum/design/board/sidewinder_peri
name = "\"Sidewinder\" Peripherals Control module"
desc = "Allows for the construction of a \"Sidewinder\" Peripheral Control module."
id = "sidewinder_peri"
build_path = /obj/item/circuitboard/mecha/sidewinder/peripherals
category = list("Exosuit Modules")
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
/datum/design/board/sidewinder_targ
name = "\"Sidewinder\" Kinetics & Mobility Control module"
desc = "Allows for the construction of a \"Sidewinder\" Kinetics & Mobility Control module."
id = "sidewinder_targ"
build_path = /obj/item/circuitboard/mecha/sidewinder/targeting
category = list("Exosuit Modules")
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
////////////////////////////////////////
/////////// Mecha Equpment /////////////
////////////////////////////////////////

View File

@@ -553,6 +553,79 @@
construction_time = 150
category = list("Clarke")
//Sidewinder
/datum/design/sidewinder_chassis
name = "Exosuit Chassis (\"Sidewinder\")"
id = "sidewinder_chassis"
build_type = MECHFAB
build_path = /obj/item/mecha_parts/chassis/sidewinder
materials = list(/datum/material/iron=15000, /datum/material/titanium=5000)
construction_time = 100
category = list("Sidewinder")
/datum/design/sidewinder_torso
name = "Exosuit Torso (\"Sidewinder\")"
id = "sidewinder_torso"
build_type = MECHFAB
build_path = /obj/item/mecha_parts/part/sidewinder_torso
materials = list(/datum/material/iron=15000, /datum/material/glass=10000, /datum/material/titanium=8000, /datum/material/plasma=4000)
construction_time = 300
category = list("Sidewinder")
/datum/design/sidewinder_head
name = "Exosuit Head (\"Sidewinder\")"
id = "sidewinder_head"
build_type = MECHFAB
build_path = /obj/item/mecha_parts/part/sidewinder_head
materials = list(/datum/material/iron=10000, /datum/material/glass=5000, /datum/material/titanium=2000, /datum/material/plasma=5000)
construction_time = 200
category = list("Sidewinder")
/datum/design/sidewinder_left_arm
name = "Exosuit Left Arm (\"Sidewinder\")"
id = "sidewinder_left_arm"
build_type = MECHFAB
build_path = /obj/item/mecha_parts/part/sidewinder_left_arm
materials = list(/datum/material/iron=15000, /datum/material/titanium=2000, /datum/material/plasma=1500, /datum/material/gold=1000)
construction_time = 200
category = list("Sidewinder")
/datum/design/sidewinder_right_arm
name = "Exosuit Right Arm (\"Sidewinder\")"
id = "sidewinder_right_arm"
build_type = MECHFAB
build_path = /obj/item/mecha_parts/part/sidewinder_right_arm
materials = list(/datum/material/iron=15000, /datum/material/titanium=2000, /datum/material/plasma=1500, /datum/material/gold=1000)
construction_time = 200
category = list("Sidewinder")
/datum/design/sidewinder_left_leg
name = "Exosuit Left Leg (\"Sidewinder\")"
id = "sidewinder_left_leg"
build_type = MECHFAB
build_path = /obj/item/mecha_parts/part/sidewinder_left_leg
materials = list(/datum/material/iron=15000, /datum/material/titanium=2000, /datum/material/plasma=1000, /datum/material/gold=1000)
construction_time = 200
category = list("Sidewinder")
/datum/design/sidewinder_right_leg
name = "Exosuit Right Leg (\"Sidewinder\")"
id = "sidewinder_right_leg"
build_type = MECHFAB
build_path = /obj/item/mecha_parts/part/sidewinder_right_leg
materials = list(/datum/material/iron=15000, /datum/material/titanium=2000, /datum/material/plasma=1000, /datum/material/gold=1000)
construction_time = 200
category = list("Sidewinder")
/datum/design/sidewinder_armor
name = "Exosuit Armor (\"Sidewinder\")"
id = "sidewinder_armor"
build_type = MECHFAB
build_path = /obj/item/mecha_parts/part/sidewinder_armor
materials = list(/datum/material/iron=15000,/datum/material/plasma=10000,/datum/material/titanium=10000)
construction_time = 600
category = list("Sidewinder")
//Exosuit Equipment
/datum/design/ripleyupgrade
name = "Ripley MK-I to MK-II conversion kit"

View File

@@ -790,6 +790,15 @@
"phazon_peri", "phazon_targ", "phazon_armor")
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500)
/datum/techweb_node/sidewinder
id = "mech_sidewinder"
display_name = "EXOSUIT: Sidewinder"
description = "Sidewinder exosuit designs"
prereq_ids = list("adv_weaponry", "mech_gygax")
design_ids = list("sidewinder_chassis", "sidewinder_torso", "sidewinder_head", "sidewinder_left_arm", "sidewinder_right_arm", "sidewinder_left_leg", "sidewinder_right_leg", "sidewinder_main",
"sidewinder_peri", "sidewinder_targ", "sidewinder_armor")
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500)
/datum/techweb_node/adv_mecha_tools
id = "adv_mecha_tools"
display_name = "Advanced Exosuit Equipment"

View File

@@ -423,6 +423,10 @@
ui_x = -736
ui_y = -128
/datum/techweb_node/sidewinder
ui_x = -736
ui_y = -196
/datum/techweb_node/adv_mecha
ui_x = -576
ui_y = -96

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 77 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 162 KiB

After

Width:  |  Height:  |  Size: 151 KiB

View File

@@ -948,6 +948,7 @@
#include "code\game\mecha\combat\marauder.dm"
#include "code\game\mecha\combat\phazon.dm"
#include "code\game\mecha\combat\reticence.dm"
#include "code\game\mecha\combat\sidewinder.dm"
#include "code\game\mecha\equipment\mecha_equipment.dm"
#include "code\game\mecha\equipment\tools\medical_tools.dm"
#include "code\game\mecha\equipment\tools\mining_tools.dm"