|
575 | 575 | if(chassis) |
576 | 576 | chassis.ejection_distance -= ejection_distance |
577 | 577 | . = ..() |
| 578 | + |
| 579 | +///// Coral Generator ///// |
| 580 | + |
| 581 | +/obj/item/mecha_parts/mecha_equipment/coral_generator |
| 582 | + name = "IA-C01G AORTA" |
| 583 | + desc = "A highly classified emergent technology, burns raw redspace crystal to enhance mech movement, as a side effect the mech will emit a red glow, greatly increasing energy usage." |
| 584 | + icon_state = "coral_engine" |
| 585 | + selectable = FALSE // your mech IS the weapon |
| 586 | + var/minimum_damage = 10 |
| 587 | + var/structure_damage_mult = 4 |
| 588 | + var/list/hit_list = list() |
| 589 | + equip_actions = list(/datum/action/innate/mecha/coral_overload_mode) |
| 590 | + |
| 591 | +/obj/item/mecha_parts/mecha_equipment/coral_generator/can_attach(obj/mecha/new_mecha) |
| 592 | + if(istype(new_mecha, /obj/mecha/combat/gygax)) // no gygax stacking sorry |
| 593 | + return FALSE |
| 594 | + if(locate(type) in new_mecha.equipment) |
| 595 | + return FALSE // no stacking multiple |
| 596 | + return ..() |
| 597 | + |
| 598 | +/datum/action/innate/mecha/coral_overload_mode |
| 599 | + name = "Coral Engine Overload" |
| 600 | + button_icon_state = "mech_coral_overload_off" |
| 601 | + |
| 602 | +/datum/action/innate/mecha/coral_overload_mode/Activate(forced_state = null) |
| 603 | + |
| 604 | + if(chassis?.equipment_disabled) // If a EMP or something has messed a mech up return instead of activating -- Moogle |
| 605 | + return |
| 606 | + if(!owner || !chassis || chassis.occupant != owner) |
| 607 | + return |
| 608 | + if(!isnull(forced_state)) |
| 609 | + chassis.coral_leg_overload_mode = forced_state |
| 610 | + else |
| 611 | + chassis.coral_leg_overload_mode = !chassis.coral_leg_overload_mode |
| 612 | + button_icon_state = "mech_coral_overload_[chassis.coral_leg_overload_mode ? "on" : "off"]" |
| 613 | + chassis.log_message("Toggled coral engine overload.", LOG_MECHA) |
| 614 | + if(chassis.coral_leg_overload_mode) |
| 615 | + chassis.AddComponent(/datum/component/after_image, 0.5 SECONDS, 0.5, TRUE) |
| 616 | + chassis.coral_leg_overload_mode = 1 |
| 617 | + chassis.step_in = min(1, round(chassis.step_in/2)) |
| 618 | + chassis.step_energy_drain = max(chassis.overload_step_energy_drain_min,chassis.step_energy_drain*chassis.leg_overload_coeff) |
| 619 | + chassis.occupant_message(span_danger("You enable coral engine overload.")) |
| 620 | + else |
| 621 | + var/datum/component/after_image/chassis_after_image = chassis.GetComponent(/datum/component/after_image) |
| 622 | + if(chassis_after_image) |
| 623 | + qdel(chassis_after_image) |
| 624 | + chassis.coral_leg_overload_mode = 0 |
| 625 | + chassis.step_in = initial(chassis.step_in) |
| 626 | + chassis.step_energy_drain = chassis.normal_step_energy_drain |
| 627 | + chassis.occupant_message(span_notice("You disable coral engine overload.")) |
| 628 | + build_all_button_icons() |
0 commit comments