diff --git a/code/__DEFINES/armor.dm b/code/__DEFINES/armor.dm index 790d19d3988..35ffad15606 100644 --- a/code/__DEFINES/armor.dm +++ b/code/__DEFINES/armor.dm @@ -1055,3 +1055,107 @@ GLOBAL_LIST_INIT(all_armor_types, list( "acid" = 0, \ "wound" = 0, \ "damage_threshold" = 10) + +/* VEHICLE ARMOR VALUES +* +* +********/ + +/* + * Uncovered vehicle 'armor', for buggies or bicycles + * * * * * * * * * * * */ +#define ARMOR_VALUE_VEHICLE_BUGGY list(\ + "melee" = 20, \ + "bullet" = 10, \ + "laser" = 10, \ + "energy" = 5, \ + "bomb" = 0, \ + "bio" = 50, \ + "rad" = 25, \ + "fire" = 50, \ + "acid" = 50, \ + "wound" = 50, \ + "damage_threshold" = 0) + +/* + * Light duty vehicles like regular cars + * * * * * * * * * * * */ +#define ARMOR_VALUE_VEHICLE_CAR list(\ + "melee" = 30, \ + "bullet" = 15, \ + "laser" = 15, \ + "energy" = 5, \ + "bomb" = 10, \ + "bio" = 50, \ + "rad" = 25, \ + "fire" = 50, \ + "acid" = 50, \ + "wound" = 50, \ + "damage_threshold" = 3) + +/* + * Heavy-duty vehicles like trucks + * Built tough to withstand more abuse + * * * * * * * * * * * */ +#define ARMOR_VALUE_VEHICLE_TRUCK list(\ + "melee" = 45, \ + "bullet" = 20, \ + "laser" = 20, \ + "energy" = 10, \ + "bomb" = 25, \ + "bio" = 50, \ + "rad" = 25, \ + "fire" = 50, \ + "acid" = 50, \ + "wound" = 50, \ + "damage_threshold" = 5) + +/* + * Light vehicles with DIY armor added to vulnerable areas + * * * * * * * * * * * */ +#define ARMOR_VALUE_VEHICLE_ARMORED_LIGHT list(\ + "melee" = 50, \ + "bullet" = 25, \ + "laser" = 20, \ + "energy" = 20, \ + "bomb" = 35, \ + "bio" = 50, \ + "rad" = 50, \ + "fire" = 50, \ + "acid" = 50, \ + "wound" = 50, \ + "damage_threshold" = 8) + +/* + * Heavy vehicles with a significant amount of armor added + * Generally, purpose-built to withstand a decent amount of attacks + * * * * * * * * * * * */ +#define ARMOR_VALUE_VEHICLE_ARMORED list(\ + "melee" = 65, \ + "bullet" = 40, \ + "laser" = 40, \ + "energy" = 35, \ + "bomb" = 35, \ + "bio" = 50, \ + "rad" = 50, \ + "fire" = 50, \ + "acid" = 50, \ + "wound" = 50, \ + "damage_threshold" = 10) + +/* + * Very sturdy vehicles designed for frontline combat + * Expected to survive a lot of attacks and dish out punishment + * * * * * * * * * * * */ +#define ARMOR_VALUE_VEHICLE_TANK list(\ + "melee" = 75, \ + "bullet" = 55, \ + "laser" = 55, \ + "energy" = 50, \ + "bomb" = 50, \ + "bio" = 50, \ + "rad" = 50, \ + "fire" = 50, \ + "acid" = 50, \ + "wound" = 50, \ + "damage_threshold" = 12) \ No newline at end of file diff --git a/code/__DEFINES/construction.dm b/code/__DEFINES/construction.dm index 7951b190e02..daf0a9e6b6b 100644 --- a/code/__DEFINES/construction.dm +++ b/code/__DEFINES/construction.dm @@ -120,6 +120,8 @@ //#define CAT_EXPLOSIVE "Explosives" #define CAT_VEHICLES "Vehicles" #define CAT_VEHICLEPARTS "Vehicle Parts" +#define CAT_VEHICLEWEAPONS "Vehicle Weapons" +#define CAT_VEHICLEAMMO "Vehicle Ammo" #define RCD_FLOORWALL 1 #define RCD_AIRLOCK 2 diff --git a/code/datums/components/crafting/recipes/recipes_weapon_and_ammo.dm b/code/datums/components/crafting/recipes/recipes_weapon_and_ammo.dm index a2358423242..eace9775c9b 100644 --- a/code/datums/components/crafting/recipes/recipes_weapon_and_ammo.dm +++ b/code/datums/components/crafting/recipes/recipes_weapon_and_ammo.dm @@ -567,19 +567,6 @@ category = CAT_WEAPONRY subcategory = CAT_AMMO -/datum/crafting_recipe/lmgammo - name = "LMG Ammo for vehicules" - result = /obj/item/mecha_ammo/lmg/craftable - reqs = list(/obj/item/stack/crafting/metalparts = 5, - /obj/item/stack/sheet/prewar = 5, - /obj/item/ammo_box/a556 = 2, - /obj/item/stack/sheet/mineral/titanium = 1, - ) - tools = list(TOOL_AWORKBENCH) - time = 5 - category = CAT_WEAPONRY - subcategory = CAT_AMMO - ///////////////// ///GUN CRAFTING// ///////////////// @@ -681,19 +668,6 @@ category = CAT_WEAPONRY subcategory = CAT_WEAPON -/datum/crafting_recipe/gun/HMGvehicule - name = "Improvised HMG (for vehicules)" - result = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/lmg/hobo - reqs = list(/obj/item/gun/ballistic/automatic/autopipe = 2, - /obj/item/stack/crafting/metalparts = 10, - /obj/item/stack/sheet/prewar = 8, - /obj/item/stack/sheet/mineral/titanium = 8, - /obj/item/stack/rods = 2) - tools = list(TOOL_WORKBENCH) - time = 180 - category = CAT_WEAPONRY - subcategory = CAT_WEAPON - /datum/crafting_recipe/gun/shotgunbat name = "Shotgun bat" result = /obj/item/gun/ballistic/revolver/hobo/single_shotgun diff --git a/code/datums/components/crafting/recipes/vehicle_parts.dm b/code/datums/components/crafting/recipes/vehicles/vehicle_parts.dm similarity index 100% rename from code/datums/components/crafting/recipes/vehicle_parts.dm rename to code/datums/components/crafting/recipes/vehicles/vehicle_parts.dm diff --git a/code/datums/components/crafting/recipes/vehicles/vehicle_weapons.dm b/code/datums/components/crafting/recipes/vehicles/vehicle_weapons.dm new file mode 100644 index 00000000000..2d3230ef008 --- /dev/null +++ b/code/datums/components/crafting/recipes/vehicles/vehicle_weapons.dm @@ -0,0 +1,64 @@ +/datum/crafting_recipe/lmgammo + name = "LMG Ammo for vehicules" + result = /obj/item/mecha_ammo/lmg/craftable + reqs = list(/obj/item/ammo_box/a556 = 1) + tools = list(TOOL_WORKBENCH) + time = 5 + category = CAT_VEHICLES + subcategory = CAT_VEHICLEAMMO + +/datum/crafting_recipe/gun/LMGvehicule + name = "Improvised LMG (for vehicules)" + result = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/lmg/hobo + reqs = list(/obj/item/gun/ballistic/automatic/autopipe = 2, + /obj/item/stack/crafting/metalparts = 10, + /obj/item/stack/sheet/prewar = 8, + /obj/item/stack/sheet/mineral/titanium = 8, + /obj/item/stack/rods = 2) + tools = list(TOOL_WORKBENCH) + time = 180 + category = CAT_VEHICLES + subcategory = CAT_VEHICLEWEAPONS + +/datum/crafting_recipe/gun/lasermount_vehicle + name = "vehicle-mounted laser rifle" + result = /obj/item/mecha_parts/mecha_equipment/weapon/energy/laser + reqs = list(/obj/item/stock_parts/scanning_module/phasic = 3, + /obj/item/stack/crafting/goodparts = 5, + /obj/item/stack/sheet/prewar = 10, + /obj/item/stack/sheet/mineral/titanium = 5, + /obj/item/stack/sheet/mineral/gold = 3, + /obj/item/stack/rods = 2) + tools = list(TOOL_AWORKBENCH) + time = 180 + category = CAT_VEHICLES + subcategory = CAT_VEHICLEWEAPONS + +/datum/crafting_recipe/gun/heavylasermount_vehicle + name = "vehicle-mounted heavy laser rifle" + result = /obj/item/mecha_parts/mecha_equipment/weapon/energy/laser/heavy + reqs = list(/obj/item/stock_parts/scanning_module/phasic = 6, + /obj/item/stack/crafting/goodparts = 10, + /obj/item/stack/sheet/prewar = 10, + /obj/item/stack/sheet/mineral/titanium = 10, + /obj/item/stack/sheet/mineral/gold = 5, + /obj/item/stack/rods = 2) + tools = list(TOOL_AWORKBENCH) + time = 180 + category = CAT_VEHICLES + subcategory = CAT_VEHICLEWEAPONS + +/datum/crafting_recipe/gun/plasmamount_vehicle + name = "vehicle-mounted Plasma caster" + result = /obj/item/mecha_parts/mecha_equipment/weapon/energy/plasma + reqs = list(/obj/item/stock_parts/micro_laser/ultra = 6, + /obj/item/stack/crafting/goodparts = 10, + /obj/item/stack/sheet/prewar = 10, + /obj/item/stack/sheet/mineral/titanium = 10, + /obj/item/stack/sheet/mineral/diamond = 5, + /obj/item/stack/sheet/mineral/gold = 10, + /obj/item/stack/rods = 2) + tools = list(TOOL_AWORKBENCH) + time = 180 + category = CAT_VEHICLES + subcategory = CAT_VEHICLEWEAPONS diff --git a/code/game/mecha/combat/combat.dm b/code/game/mecha/combat/combat.dm index 92e90c6d27a..86e68ce9fb8 100644 --- a/code/game/mecha/combat/combat.dm +++ b/code/game/mecha/combat/combat.dm @@ -3,8 +3,6 @@ internal_damage_threshold = 50 armor = ARMOR_VALUE_HEAVY mouse_pointer = 'icons/mecha/mecha_mouse.dmi' - deflect_chance = 0 - max_equip = 4 stepsound = 'sound/mecha/neostep2.ogg' /obj/mecha/combat/proc/max_ammo() //Max the ammo stored for Nuke Ops mechs, or anyone else that calls this diff --git a/code/game/mecha/combat/gygax.dm b/code/game/mecha/combat/gygax.dm index 4e81f0510bc..4200a63e885 100644 --- a/code/game/mecha/combat/gygax.dm +++ b/code/game/mecha/combat/gygax.dm @@ -29,7 +29,6 @@ max_temperature = 35000 leg_overload_coeff = 100 wreckage = /obj/structure/mecha_wreckage/gygax/dark - max_equip = 4 /obj/mecha/combat/gygax/dark/loaded/Initialize() . = ..() diff --git a/code/game/mecha/combat/marauder.dm b/code/game/mecha/combat/marauder.dm index 825a3da6f41..9f5071dee91 100644 --- a/code/game/mecha/combat/marauder.dm +++ b/code/game/mecha/combat/marauder.dm @@ -52,7 +52,6 @@ wreckage = /obj/structure/mecha_wreckage/seraph internal_damage_threshold = 20 force = 65 - max_equip = 5 /obj/mecha/combat/marauder/seraph/Initialize() . = ..() @@ -74,8 +73,6 @@ name = "\improper Mauler" icon_state = "mauler" wreckage = /obj/structure/mecha_wreckage/mauler - max_equip = 5 - /obj/mecha/combat/marauder/mauler/loaded/Initialize() . = ..() var/obj/item/mecha_parts/mecha_equipment/ME = new /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/lmg(src) diff --git a/code/game/mecha/combat/phazon.dm b/code/game/mecha/combat/phazon.dm index 36fafd45769..c9f0b0199c7 100644 --- a/code/game/mecha/combat/phazon.dm +++ b/code/game/mecha/combat/phazon.dm @@ -6,7 +6,6 @@ dir_in = 2 //Facing South. step_energy_drain = 3 max_integrity = 200 - deflect_chance = 30 armor = ARMOR_VALUE_HEAVY max_temperature = 25000 infra_luminosity = 3 @@ -14,7 +13,6 @@ add_req_access = 1 internal_damage_threshold = 25 force = 15 - max_equip = 3 phase_state = "phazon-phase" /obj/mecha/combat/phazon/GrantActions(mob/living/user, human_occupant = 0) @@ -27,1299 +25,3 @@ ..() switch_damtype_action.Remove(user) phasing_action.Remove(user) - -//////////// VERTIBIRD ////////////// - -/obj/mecha/combat/phazon/vertibird - name = "\improper Vertibird" - desc = "A real useable, and working vertibird, maintained with luck, sweat, and ducktape. This one seems to be more focused toward combat." - icon = 'icons/mecha/vb-vertibird.dmi' - icon_state = "vb" - pixel_x = -138 - pixel_y = -138 - layer = ABOVE_MOB_LAYER - can_be_locked = TRUE - dna_lock - step_in = 0.6 - dir_in = 2 - step_energy_drain = 0.75 - max_integrity = 150 - deflect_chance = 30 - armor = ARMOR_VALUE_LIGHT - max_temperature = 25000 - infra_luminosity = 1 - wreckage = /obj/structure/mecha_wreckage/vertibird - add_req_access = 1 - internal_damage_threshold = 25 - force = 15 - max_equip = 6 - opacity = 0 - canstrafe = TRUE - movement_type = FLYING - stepsound = 'sound/f13machines/vertibird_loop.ogg' - turnsound = 'sound/f13machines/vertibird_loop.ogg' - -/obj/structure/mecha_wreckage/vertibird - name = "\improper Vertibird Wreck" - desc = "Mayday, Mayday, Vertibird going down... IN STYLE." - icon = 'icons/mecha/vb-vertibird.dmi' - icon_state = "vb-broken" - pixel_x = -138 - pixel_y = -138 - -/obj/mecha/combat/phazon/vertibird/GrantActions(mob/living/user, human_occupant = 0) - internals_action.Grant(user, src) - cycle_action.Grant(user, src) - lights_action.Grant(user, src) - stats_action.Grant(user, src) - strafing_action.Grant(user, src) - zoom_action.Grant(user, src) - eject_action.Grant(user, src) - landing_action.Grant(user, src) - -/obj/mecha/combat/phazon/vertibird/RemoveActions(mob/living/user, human_occupant = 0) - internals_action.Remove(user) - cycle_action.Remove(user) - lights_action.Remove(user) - stats_action.Remove(user) - strafing_action.Remove(user) - zoom_action.Remove(user) - eject_action.Remove(user) - landing_action.Remove(user) - -/obj/mecha/combat/phazon/vertibird/obj_destruction() - for(var/mob/M in src) - to_chat(M, span_brass("The vertibird is going to Crash")) - M.dust() - playsound(src, 'sound//f13machines//vertibird_crash.ogg', 100, 0) - src.visible_message(span_userdanger("The reactor has gone critical, its going to blow!")) - addtimer(CALLBACK(src,.proc/go_critical),breach_time) - -/obj/mecha/combat/phazon/vertibird/proc/go_critical() - explosion(get_turf(loc)) - Destroy(src) - -/obj/mecha/combat/phazon/vertibird/loaded/Initialize() - . = ..() - var/obj/item/mecha_parts/mecha_equipment/ME = new /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/lmg - ME.attach(src) - ME = new /obj/item/mecha_parts/mecha_equipment/seat - ME.attach(src) - ME = new /obj/item/mecha_parts/mecha_equipment/seat - ME.attach(src) - ME = new /obj/item/mecha_parts/mecha_equipment/seat - ME.attach(src) - ME = new /obj/item/mecha_parts/mecha_equipment/medical/sleeper - ME.attach(src) - max_ammo() - -///NCR VERTIBIRD - -/obj/mecha/combat/phazon/vertibird/ncr - name = "\improper NCR Vertibird" - desc = "A real useable, and working vertibird, maintained with luck, sweat, and ducktape. This one seems to be more focused toward Troop transport, and his painted in the colors of the NCR." - icon = 'icons/mecha/vb-vertibird-ncr.dmi' - icon_state = "vb" - pixel_x = -138 - pixel_y = -138 - layer = ABOVE_MOB_LAYER - can_be_locked = TRUE - dna_lock - step_in = 0.8 - dir_in = 2 - step_energy_drain = 0.7 - max_integrity = 200 - deflect_chance = 30 - armor = ARMOR_VALUE_LIGHT - max_temperature = 25000 - infra_luminosity = 1 - wreckage = /obj/structure/mecha_wreckage/vertibird - add_req_access = 1 - internal_damage_threshold = 25 - force = 15 - max_equip = 8 - opacity = 0 - canstrafe = TRUE - movement_type = FLYING - stepsound = 'sound/f13machines/vertibird_loop.ogg' - turnsound = 'sound/f13machines/vertibird_loop.ogg' - -/obj/mecha/combat/phazon/vertibird/ncr/GrantActions(mob/living/user, human_occupant = 0) - internals_action.Grant(user, src) - cycle_action.Grant(user, src) - lights_action.Grant(user, src) - stats_action.Grant(user, src) - strafing_action.Grant(user, src) - zoom_action.Grant(user, src) - eject_action.Grant(user, src) - smoke_action.Grant(user, src) - landing_action.Grant(user, src) - -/obj/mecha/combat/phazon/vertibird/ncr/RemoveActions(mob/living/user, human_occupant = 0) - internals_action.Remove(user) - cycle_action.Remove(user) - lights_action.Remove(user) - stats_action.Remove(user) - strafing_action.Remove(user) - zoom_action.Remove(user) - eject_action.Remove(user) - smoke_action.Remove(user) - landing_action.Remove(user) - -/obj/mecha/combat/phazon/vertibird/ncr/obj_destruction() - for(var/mob/M in src) - to_chat(M, span_brass(" The vertibird is going to Crash !")) - M.dust() - playsound(src, 'sound//f13machines//vertibird_crash.ogg', 100, 0) - src.visible_message(span_userdanger("The reactor has gone critical, its going to blow!")) - addtimer(CALLBACK(src,.proc/go_critical),breach_time) - -/obj/mecha/combat/phazon/vertibird/ncr/loaded/Initialize() - . = ..() - var/obj/item/mecha_parts/mecha_equipment/ME = new /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/lmg - ME.attach(src) - ME = new /obj/item/mecha_parts/mecha_equipment/seat - ME.attach(src) - ME = new /obj/item/mecha_parts/mecha_equipment/seat - ME.attach(src) - ME = new /obj/item/mecha_parts/mecha_equipment/seat - ME.attach(src) - ME = new /obj/item/mecha_parts/mecha_equipment/seat - ME.attach(src) - ME = new /obj/item/mecha_parts/mecha_equipment/medical/sleeper - ME.attach(src) - ME = new /obj/item/mecha_parts/mecha_equipment/medical/sleeper - ME.attach(src) - max_ammo() - -///VERTIBIRD ENCLAVE - -/obj/mecha/combat/phazon/vertibird/enclave - name = "\improper Enclave Naval Vertibird" - desc = "A real useable, and working vertibird, maintained with luck, sweat, and ducktape. This one seems to be more focused toward combat, and be stored in a ship. Thats peak Enclave tech." - icon = 'icons/mecha/vb-vertibird-enclave.dmi' - icon_state = "vb" - pixel_x = -138 - pixel_y = -138 - layer = ABOVE_MOB_LAYER - can_be_locked = TRUE - dna_lock - step_in = 0.6 - dir_in = 2 - step_energy_drain = 0.75 - max_integrity = 150 - deflect_chance = 30 - armor = ARMOR_VALUE_LIGHT - max_temperature = 25000 - infra_luminosity = 1 - wreckage = /obj/structure/mecha_wreckage/vertibird - add_req_access = 1 - internal_damage_threshold = 25 - force = 15 - max_equip = 6 - opacity = 0 - canstrafe = TRUE - movement_type = FLYING - stepsound = 'sound/f13machines/vertibird_loop.ogg' - turnsound = 'sound/f13machines/vertibird_loop.ogg' - -/obj/mecha/combat/phazon/vertibird/enclave/GrantActions(mob/living/user, human_occupant = 0) - internals_action.Grant(user, src) - cycle_action.Grant(user, src) - lights_action.Grant(user, src) - stats_action.Grant(user, src) - strafing_action.Grant(user, src) - zoom_action.Grant(user, src) - eject_action.Grant(user, src) - landing_action.Grant(user, src) - -/obj/mecha/combat/phazon/vertibird/enclave/RemoveActions(mob/living/user, human_occupant = 0) - internals_action.Remove(user) - cycle_action.Remove(user) - lights_action.Remove(user) - stats_action.Remove(user) - strafing_action.Remove(user) - zoom_action.Remove(user) - eject_action.Remove(user) - landing_action.Remove(user) - -/obj/mecha/combat/phazon/vertibird/enclave/obj_destruction() - for(var/mob/M in src) - to_chat(M, span_brass(" The vertibird is going to Crash !")) - M.dust() - playsound(src, 'sound//f13machines//vertibird_crash.ogg', 100, 0) - src.visible_message(span_userdanger("The reactor has gone critical, its going to blow!")) - addtimer(CALLBACK(src,.proc/go_critical),breach_time) - -/obj/mecha/combat/phazon/vertibird/enclave/loaded/Initialize() - . = ..() - var/obj/item/mecha_parts/mecha_equipment/ME = new /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/lmg - ME.attach(src) - ME = new /obj/item/mecha_parts/mecha_equipment/seat - ME.attach(src) - ME = new /obj/item/mecha_parts/mecha_equipment/seat - ME.attach(src) - ME = new /obj/item/mecha_parts/mecha_equipment/seat - ME.attach(src) - max_ammo() - -/// BOS Vertibird - -/obj/mecha/combat/phazon/vertibird/brotherhood - name = "\improper Brotherhood Vertibird" - desc = "A real useable, and working vertibird, maintained with luck, sweat, and ducktape. This one seems to be more focused toward combat, and marked with brotherhood markings." - icon = 'icons/mecha/vb-vertibird-bos.dmi' - icon_state = "vb" - pixel_x = -138 - pixel_y = -138 - layer = ABOVE_MOB_LAYER - can_be_locked = TRUE - dna_lock - step_in = 0.6 - dir_in = 2 - step_energy_drain = 0.75 - max_integrity = 150 - deflect_chance = 30 - armor = ARMOR_VALUE_LIGHT - max_temperature = 25000 - infra_luminosity = 1 - wreckage = /obj/structure/mecha_wreckage/vertibird - add_req_access = 1 - internal_damage_threshold = 25 - force = 15 - max_equip = 6 - opacity = 0 - canstrafe = TRUE - movement_type = FLYING - stepsound = 'sound/f13machines/vertibird_loop.ogg' - turnsound = 'sound/f13machines/vertibird_loop.ogg' - -/obj/mecha/combat/phazon/vertibird/brotherhood/GrantActions(mob/living/user, human_occupant = 0) - internals_action.Grant(user, src) - cycle_action.Grant(user, src) - lights_action.Grant(user, src) - stats_action.Grant(user, src) - strafing_action.Grant(user, src) - zoom_action.Grant(user, src) - eject_action.Grant(user, src) - landing_action.Grant(user, src) - -/obj/mecha/combat/phazon/vertibird/brotherhood/RemoveActions(mob/living/user, human_occupant = 0) - internals_action.Remove(user) - cycle_action.Remove(user) - lights_action.Remove(user) - stats_action.Remove(user) - strafing_action.Remove(user) - zoom_action.Remove(user) - eject_action.Remove(user) - landing_action.Remove(user) - -/obj/mecha/combat/phazon/vertibird/brotherhood/obj_destruction() - for(var/mob/M in src) - to_chat(M, span_brass(" The vertibird is going to Crash !")) - M.dust() - playsound(src, 'sound//f13machines//vertibird_crash.ogg', 100, 0) - src.visible_message(span_userdanger("The reactor has gone critical, its going to blow!")) - addtimer(CALLBACK(src,.proc/go_critical),breach_time) - -/obj/mecha/combat/phazon/vertibird/brotherhood/loaded/Initialize() - . = ..() - var/obj/item/mecha_parts/mecha_equipment/ME = new /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/lmg - ME.attach(src) - ME = new /obj/item/mecha_parts/mecha_equipment/seat - ME.attach(src) - ME = new /obj/item/mecha_parts/mecha_equipment/seat - ME.attach(src) - ME = new /obj/item/mecha_parts/mecha_equipment/seat - ME.attach(src) - max_ammo() - -//////////// NCR TRUCK ////////////// - -/obj/mecha/combat/phazon/ncrtruck - name = "\improper NCR Truck" - desc = "A truck running on powercells. Nice eh ? still a wreck." - icon = 'icons/mecha/ncrtruck.dmi' - icon_state = "ncrtruck" - pixel_x = -15 - pixel_y = 0 - can_be_locked = TRUE - dna_lock - step_in = 1 - opacity = 0 - dir_in = 8 - step_energy_drain = 1 - max_temperature = 20000 - max_integrity = 600 - armor = ARMOR_VALUE_HEAVY - max_equip = 8 - stepsound = 'sound/f13machines/buggy_loop.ogg' - turnsound = 'sound/f13machines/buggy_loop.ogg' - wreckage = /obj/structure/mecha_wreckage/ncrtruck - var/list/cargo = new - var/cargo_capacity = 30 - var/hides = 0 - -/obj/structure/mecha_wreckage/ncrtruck - name = "\improper NCR Truck wreckage" - desc = "Its a truck ! BROKEN TRUCK." - icon = 'icons/fallout/vehicles/medium_vehicles.dmi' - icon_state = "derelict" - -/obj/mecha/combat/phazon/ncrtruck/go_out() - ..() - update_icon() - -/obj/mecha/combat/phazon/ncrtruck/moved_inside(mob/living/carbon/human/H) - ..() - update_icon() - -/obj/mecha/combat/phazon/ncrtruck/Destroy() - for(var/atom/movable/A in cargo) - A.forceMove(drop_location()) - step_rand(A) - cargo.Cut() - return ..() - -/obj/mecha/combat/phazon/ncrtruck/GrantActions(mob/living/user, human_occupant = 0) - cycle_action.Grant(user, src) - lights_action.Grant(user, src) - stats_action.Grant(user, src) - eject_action.Grant(user, src) - klaxon_action.Grant(user, src) - -/obj/mecha/combat/phazon/ncrtruck/RemoveActions(mob/living/user, human_occupant = 0) - cycle_action.Remove(user) - lights_action.Remove(user) - stats_action.Remove(user) - eject_action.Remove(user) - klaxon_action.Remove(user) - -/obj/mecha/combat/phazon/ncrtruck/loaded/Initialize() - . = ..() - var/obj/item/mecha_parts/mecha_equipment/ME = new - ME = new /obj/item/mecha_parts/mecha_equipment/seat - ME.attach(src) - ME = new /obj/item/mecha_parts/mecha_equipment/seat - ME.attach(src) - ME = new /obj/item/mecha_parts/mecha_equipment/seat - ME.attach(src) - ME = new /obj/item/mecha_parts/mecha_equipment/seat - ME.attach(src) - ME = new /obj/item/mecha_parts/mecha_equipment/seat - ME.attach(src) - ME = new /obj/item/mecha_parts/mecha_equipment/seat - ME.attach(src) - -//////////// NCR TRUCK MP ////////////// - -/obj/mecha/combat/phazon/ncrtruck/mp - name = "\improper NCR MP Truck" - desc = "A truck running on powercells. Nice eh ? still a wreck. This Truck has been given to the NCR MPs, and has been modified to go a bit faster. But, got less seats and is a bit less solid." - icon = 'icons/mecha/ncrtruck-mp.dmi' - icon_state = "ncrtruck" - pixel_x = -15 - pixel_y = 0 - can_be_locked = TRUE - dna_lock - step_in = 1 - opacity = 0 - dir_in = 8 - step_energy_drain = 1 - max_temperature = 20000 - max_integrity = 600 - armor = ARMOR_VALUE_HEAVY - max_equip = 4 - stepsound = 'sound/f13machines/buggy_loop.ogg' - turnsound = 'sound/f13machines/buggy_loop.ogg' - wreckage = /obj/structure/mecha_wreckage/ncrtruck - -/obj/mecha/combat/phazon/ncrtruck/mp/go_out() - ..() - update_icon() - -/obj/mecha/combat/phazon/ncrtruck/mp/moved_inside(mob/living/carbon/human/H) - ..() - update_icon() - -/obj/mecha/combat/phazon/ncrtruck/mp/Destroy() - for(var/atom/movable/A in cargo) - A.forceMove(drop_location()) - step_rand(A) - cargo.Cut() - return ..() - -/obj/mecha/combat/phazon/ncrtruck/mp/GrantActions(mob/living/user, human_occupant = 0) - cycle_action.Grant(user, src) - lights_action.Grant(user, src) - stats_action.Grant(user, src) - eject_action.Grant(user, src) - klaxon_action.Grant(user, src) - sirens_action.Grant(user, src) - -/obj/mecha/combat/phazon/ncrtruck/mp/RemoveActions(mob/living/user, human_occupant = 0) - cycle_action.Remove(user) - lights_action.Remove(user) - stats_action.Remove(user) - eject_action.Remove(user) - klaxon_action.Remove(user) - sirens_action.Remove(user) - -/obj/mecha/combat/phazon/ncrtruck/mp/loaded/Initialize() - . = ..() - var/obj/item/mecha_parts/mecha_equipment/ME = new - ME = new /obj/item/mecha_parts/mecha_equipment/seat - ME.attach(src) - ME = new /obj/item/mecha_parts/mecha_equipment/seat - ME.attach(src) - ME = new /obj/item/mecha_parts/mecha_equipment/seat - ME.attach(src) - -//Buggy - -/obj/mecha/combat/phazon/buggy - name = "\improper Buggy" - desc = "A light vehicle, not very powerfull or solid, running on a powercell." - icon = 'icons/mecha/buggy.dmi' - icon_state = "buggygreen" - pixel_x = -15 - pixel_y = 0 - can_be_locked = TRUE - dna_lock - step_in = 0.8 - opacity = 0 - dir_in = 8 - step_energy_drain = 1 - max_temperature = 20000 - max_integrity = 200 - armor = ARMOR_VALUE_LIGHT - max_equip = 2 - stepsound = 'sound/f13machines/buggy_loop.ogg' - turnsound = 'sound/f13machines/buggy_loop.ogg' - wreckage = /obj/structure/mecha_wreckage/buggy - -/obj/structure/mecha_wreckage/buggy - name = "\improper Buggy wreckage" - desc = "Its a buggy ! Won't bug you anymore." - icon_state = "buggy-broken" - -/obj/mecha/combat/phazon/buggy/go_out() - ..() - update_icon() - -/obj/mecha/combat/phazon/buggy/moved_inside(mob/living/carbon/human/H) - ..() - update_icon() - -/obj/mecha/combat/phazon/buggy/GrantActions(mob/living/user, human_occupant = 0) - cycle_action.Grant(user, src) - lights_action.Grant(user, src) - stats_action.Grant(user, src) - eject_action.Grant(user, src) - klaxon_action.Grant(user, src) - -/obj/mecha/combat/phazon/buggy/RemoveActions(mob/living/user, human_occupant = 0) - cycle_action.Remove(user) - lights_action.Remove(user) - stats_action.Remove(user) - eject_action.Remove(user) - klaxon_action.Remove(user) - -/obj/mecha/combat/phazon/buggy/loaded/Initialize() - . = ..() - var/obj/item/mecha_parts/mecha_equipment/ME = new - ME = new /obj/item/mecha_parts/mecha_equipment/seat - ME.attach(src) - -//Buggydune - -/obj/mecha/combat/phazon/buggy/dune - name = "\improper Buggy" - desc = "A light vehicle, not very powerfull or solid, running on a powercell." - icon = 'icons/mecha/buggy.dmi' - icon_state = "buggydune" - pixel_x = -15 - pixel_y = 0 - can_be_locked = TRUE - dna_lock - step_in = 0.8 - opacity = 0 - dir_in = 8 - step_energy_drain = 1 - max_temperature = 20000 - max_integrity = 200 - armor = ARMOR_VALUE_LIGHT - max_equip = 2 - stepsound = 'sound/f13machines/buggy_loop.ogg' - turnsound = 'sound/f13machines/buggy_loop.ogg' - wreckage = /obj/structure/mecha_wreckage/buggy - -/obj/mecha/combat/phazon/buggy/dune/go_out() - ..() - update_icon() - -/obj/mecha/combat/phazon/buggy/dune/moved_inside(mob/living/carbon/human/H) - ..() - update_icon() - -/obj/mecha/combat/phazon/buggy/dune/GrantActions(mob/living/user, human_occupant = 0) - cycle_action.Grant(user, src) - lights_action.Grant(user, src) - stats_action.Grant(user, src) - eject_action.Grant(user, src) - klaxon_action.Grant(user, src) - -/obj/mecha/combat/phazon/buggy/dune/RemoveActions(mob/living/user, human_occupant = 0) - cycle_action.Remove(user) - lights_action.Remove(user) - stats_action.Remove(user) - eject_action.Remove(user) - klaxon_action.Remove(user) - -/obj/mecha/combat/phazon/buggy/dune/loaded/Initialize() - . = ..() - var/obj/item/mecha_parts/mecha_equipment/ME = new - ME = new /obj/item/mecha_parts/mecha_equipment/seat - ME.attach(src) - -//Buggyred - -/obj/mecha/combat/phazon/buggy/red - name = "\improper Buggy" - desc = "A light vehicle, not very powerfull or solid, running on a powercell." - icon = 'icons/mecha/buggy.dmi' - icon_state = "buggyred" - pixel_x = -15 - pixel_y = 0 - can_be_locked = TRUE - dna_lock - step_in = 0.8 - opacity = 0 - dir_in = 8 - step_energy_drain = 1 - max_temperature = 20000 - max_integrity = 200 - armor = ARMOR_VALUE_LIGHT - max_equip = 2 - stepsound = 'sound/f13machines/buggy_loop.ogg' - turnsound = 'sound/f13machines/buggy_loop.ogg' - wreckage = /obj/structure/mecha_wreckage/buggy - -/obj/mecha/combat/phazon/buggy/red/go_out() - ..() - update_icon() - -/obj/mecha/combat/phazon/buggy/red/moved_inside(mob/living/carbon/human/H) - ..() - update_icon() - -/obj/mecha/combat/phazon/buggy/red/GrantActions(mob/living/user, human_occupant = 0) - cycle_action.Grant(user, src) - lights_action.Grant(user, src) - stats_action.Grant(user, src) - eject_action.Grant(user, src) - klaxon_action.Grant(user, src) - -/obj/mecha/combat/phazon/buggy/red/RemoveActions(mob/living/user, human_occupant = 0) - cycle_action.Remove(user) - lights_action.Remove(user) - stats_action.Remove(user) - eject_action.Remove(user) - klaxon_action.Remove(user) - -/obj/mecha/combat/phazon/buggy/red/loaded/Initialize() - . = ..() - var/obj/item/mecha_parts/mecha_equipment/ME = new - ME = new /obj/item/mecha_parts/mecha_equipment/seat - ME.attach(src) - -//Buggyflame - -/obj/mecha/combat/phazon/buggy/flamme - name = "\improper Buggy" - desc = "A light vehicle, not very powerfull or solid, running on a powercell." - icon = 'icons/mecha/buggy.dmi' - icon_state = "buggyflame" - pixel_x = -15 - pixel_y = 0 - can_be_locked = TRUE - dna_lock - step_in = 0.8 - opacity = 0 - dir_in = 8 - step_energy_drain = 1 - max_temperature = 20000 - max_integrity = 200 - armor = ARMOR_VALUE_LIGHT - max_equip = 2 - stepsound = 'sound/f13machines/buggy_loop.ogg' - turnsound = 'sound/f13machines/buggy_loop.ogg' - wreckage = /obj/structure/mecha_wreckage/buggy - -/obj/mecha/combat/phazon/buggy/flamme/go_out() - ..() - update_icon() - -/obj/mecha/combat/phazon/buggy/flamme/moved_inside(mob/living/carbon/human/H) - ..() - update_icon() - -/obj/mecha/combat/phazon/buggy/flamme/GrantActions(mob/living/user, human_occupant = 0) - cycle_action.Grant(user, src) - lights_action.Grant(user, src) - stats_action.Grant(user, src) - eject_action.Grant(user, src) - klaxon_action.Grant(user, src) - -/obj/mecha/combat/phazon/buggy/flamme/RemoveActions(mob/living/user, human_occupant = 0) - cycle_action.Remove(user) - lights_action.Remove(user) - stats_action.Remove(user) - eject_action.Remove(user) - klaxon_action.Remove(user) - -/obj/mecha/combat/phazon/buggy/flamme/loaded/Initialize() - . = ..() - var/obj/item/mecha_parts/mecha_equipment/ME = new - ME = new /obj/item/mecha_parts/mecha_equipment/seat - ME.attach(src) - -//Buggy Ranger - -/obj/mecha/combat/phazon/buggy/ranger - name = "\improper Ranger Buggy" - desc = "A light vehicle, not very powerfull or solid, running on a powercell. This one as been recolored by the Rangers." - icon = 'icons/mecha/hanlonbuggy.dmi' - icon_state = "hanlonbuggy" - pixel_x = -15 - pixel_y = 0 - can_be_locked = TRUE - dna_lock - step_in = 0.8 - opacity = 0 - dir_in = 8 - step_energy_drain = 1 - max_temperature = 20000 - max_integrity = 200 - armor = ARMOR_VALUE_LIGHT - max_equip = 2 - stepsound = 'sound/f13machines/buggy_loop.ogg' - turnsound = 'sound/f13machines/buggy_loop.ogg' - wreckage = /obj/structure/mecha_wreckage/buggy - -/obj/mecha/combat/phazon/buggy/ranger/go_out() - ..() - update_icon() - -/obj/mecha/combat/phazon/buggy/ranger/moved_inside(mob/living/carbon/human/H) - ..() - update_icon() - -/obj/mecha/combat/phazon/buggy/ranger/GrantActions(mob/living/user, human_occupant = 0) - cycle_action.Grant(user, src) - lights_action.Grant(user, src) - stats_action.Grant(user, src) - eject_action.Grant(user, src) - klaxon_action.Grant(user, src) - -/obj/mecha/combat/phazon/buggy/ranger/RemoveActions(mob/living/user, human_occupant = 0) - cycle_action.Remove(user) - lights_action.Remove(user) - stats_action.Remove(user) - eject_action.Remove(user) - klaxon_action.Remove(user) - -/obj/mecha/combat/phazon/buggy/ranger/loaded/Initialize() - . = ..() - var/obj/item/mecha_parts/mecha_equipment/ME = new - ME = new /obj/item/mecha_parts/mecha_equipment/seat - ME.attach(src) - -//Buggy Ranger AND RICO - -/obj/mecha/combat/phazon/buggy/rangerarmed - name = "\improper Vet Ranger Buggy with gunner" - desc = "A light vehicle, not very powerfull or solid, running on a powercell. This one as been recolored by the Rangers... And Ranger Rico ''Gunner'' Davberger is gonna shoot with his shotgun." - icon = 'icons/mecha/buggyrangergun.dmi' - icon_state = "rangergun" - pixel_x = -15 - pixel_y = 0 - can_be_locked = TRUE - dna_lock - step_in = 1 - opacity = 0 - dir_in = 8 - step_energy_drain = 1 - max_temperature = 20000 - max_integrity = 200 - armor = ARMOR_VALUE_LIGHT - max_equip = 3 - stepsound = 'sound/f13machines/buggy_loop.ogg' - turnsound = 'sound/f13machines/buggy_loop.ogg' - wreckage = /obj/structure/mecha_wreckage/buggy - -/obj/mecha/combat/phazon/buggy/rangerarmed/go_out() - ..() - update_icon() - -/obj/mecha/combat/phazon/buggy/rangerarmed/moved_inside(mob/living/carbon/human/H) - ..() - update_icon() - -/obj/mecha/combat/phazon/buggy/rangerarmed/GrantActions(mob/living/user, human_occupant = 0) - cycle_action.Grant(user, src) - lights_action.Grant(user, src) - stats_action.Grant(user, src) - eject_action.Grant(user, src) - klaxon_action.Grant(user, src) - smoke_action.Grant(user, src) - -/obj/mecha/combat/phazon/buggy/rangerarmed/RemoveActions(mob/living/user, human_occupant = 0) - cycle_action.Remove(user) - lights_action.Remove(user) - stats_action.Remove(user) - eject_action.Remove(user) - klaxon_action.Remove(user) - smoke_action.Remove(user) - -/obj/mecha/combat/phazon/buggy/rangerarmed/loaded/Initialize() - . = ..() - var/obj/item/mecha_parts/mecha_equipment/ME = new - ME = new /obj/item/mecha_parts/mecha_equipment/seat - ME.attach(src) - ME = new /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/scattershot - ME.attach(src) - max_ammo() - -//Legion Chariot - -/obj/mecha/combat/phazon/buggy/legion - name = "\improper Legion Chariot" - desc = "A light vehicle, not very powerfull or solid, running on a power cell... Okay, its a lie. Its actually run on power generated by the horse...The cell is here to make sure that some componant of the half buggy pulled by horses works." - icon = 'icons/mecha/buggy-legion.dmi' - icon_state = "legionbuggy" - pixel_x = -18 - pixel_y = 0 - can_be_locked = TRUE - dna_lock - step_in = 1.2 - opacity = 0 - dir_in = 8 - step_energy_drain = 0.8 - max_temperature = 20000 - max_integrity = 250 - armor = ARMOR_VALUE_MEDIUM - max_equip = 2 - stepsound = 'sound/effects/footstep/gallop2.ogg' - turnsound = 'sound/effects/footstep/gallop1.ogg' - wreckage = /obj/structure/mecha_wreckage/buggy - -/obj/mecha/combat/phazon/buggy/legion/go_out() - ..() - update_icon() - -/obj/mecha/combat/phazon/buggy/legion/moved_inside(mob/living/carbon/human/H) - ..() - update_icon() - -/obj/mecha/combat/phazon/buggy/legion/GrantActions(mob/living/user, human_occupant = 0) - cycle_action.Grant(user, src) - lights_action.Grant(user, src) - stats_action.Grant(user, src) - eject_action.Grant(user, src) - klaxon_action.Grant(user, src) - -/obj/mecha/combat/phazon/buggy/legion/RemoveActions(mob/living/user, human_occupant = 0) - cycle_action.Remove(user) - lights_action.Remove(user) - stats_action.Remove(user) - eject_action.Remove(user) - klaxon_action.Remove(user) - -/obj/mecha/combat/phazon/buggy/legion/loaded/Initialize() - . = ..() - var/obj/item/mecha_parts/mecha_equipment/ME = new - ME = new /obj/item/mecha_parts/mecha_equipment/seat - ME.attach(src) - -//Buggy Legion AND MESALLA - -/obj/mecha/combat/phazon/buggy/legionarmed - name = "\improper Legion Chariot with gunner" - desc = "A light vehicle, not very powerfull or solid, running on a power cell... Okay, its a lie. Its actually run on power generated by the horse...The cell is here to make sure that some componant of the half buggy pulled by horses works. This one as been recolored by the legions... And Prime Decanus Messala ''Gunner'' Davius is gonna shoot with his shotgun." - icon = 'icons/mecha/buggy-legiongun.dmi' - icon_state = "legiongun" - pixel_x = -18 - pixel_y = 0 - can_be_locked = TRUE - dna_lock - step_in = 1.2 - opacity = 0 - dir_in = 8 - step_energy_drain = 0.8 - max_temperature = 20000 - max_integrity = 250 - armor = ARMOR_VALUE_MEDIUM - max_equip = 3 - stepsound = 'sound/effects/footstep/gallop2.ogg' - turnsound = 'sound/effects/footstep/gallop1.ogg' - wreckage = /obj/structure/mecha_wreckage/buggy - -/obj/mecha/combat/phazon/buggy/legionarmed/go_out() - ..() - update_icon() - -/obj/mecha/combat/phazon/buggy/legionarmed/moved_inside(mob/living/carbon/human/H) - ..() - update_icon() - -/obj/mecha/combat/phazon/buggy/legionarmed/GrantActions(mob/living/user, human_occupant = 0) - cycle_action.Grant(user, src) - lights_action.Grant(user, src) - stats_action.Grant(user, src) - eject_action.Grant(user, src) - klaxon_action.Grant(user, src) - smoke_action.Grant(user, src) - -/obj/mecha/combat/phazon/buggy/legionarmed/RemoveActions(mob/living/user, human_occupant = 0) - cycle_action.Remove(user) - lights_action.Remove(user) - stats_action.Remove(user) - eject_action.Remove(user) - klaxon_action.Remove(user) - smoke_action.Remove(user) - -/obj/mecha/combat/phazon/buggy/legionarmed/loaded/Initialize() - . = ..() - var/obj/item/mecha_parts/mecha_equipment/ME = new - ME = new /obj/item/mecha_parts/mecha_equipment/seat - ME.attach(src) - ME = new /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/scattershot - ME.attach(src) - max_ammo() - -//Highwayman - -/obj/mecha/combat/phazon/highwayman - name = "\improper highwayman eco" - desc = "A fast vehicule, runing on powercell. YUP ! ITS THE HIGHWAYMAN ! Kinda. Its not the original, but a budget version." - icon = 'icons/mecha/highwayman.dmi' - icon_state = "highwayman" - pixel_x = -15 - pixel_y = 0 - can_be_locked = TRUE - dna_lock - step_in = 0.7 - opacity = 0 - dir_in = 8 - step_energy_drain = 1 - max_temperature = 20000 - max_integrity = 250 - armor = list("melee" = 30, "bullet" = 25, "laser" = 20, "energy" = 20, "bomb" = 40, "bio" = 0, "rad" = 100, "fire" = 100, "acid" = 100) - max_equip = 2 - stepsound = 'sound/f13machines/buggy_loop.ogg' - turnsound = 'sound/f13machines/buggy_loop.ogg' - wreckage = /obj/structure/mecha_wreckage/buggy - -/obj/mecha/combat/phazon/highwayman/go_out() - ..() - update_icon() - -/obj/mecha/combat/phazon/highwayman/moved_inside(mob/living/carbon/human/H) - ..() - update_icon() - -/obj/mecha/combat/phazon/highwayman/GrantActions(mob/living/user, human_occupant = 0) - cycle_action.Grant(user, src) - lights_action.Grant(user, src) - stats_action.Grant(user, src) - eject_action.Grant(user, src) - klaxon_action.Grant(user, src) - -/obj/mecha/combat/phazon/highwayman/RemoveActions(mob/living/user, human_occupant = 0) - cycle_action.Remove(user) - lights_action.Remove(user) - stats_action.Remove(user) - eject_action.Remove(user) - klaxon_action.Remove(user) - -/obj/mecha/combat/phazon/highwayman/loaded/Initialize() - . = ..() - var/obj/item/mecha_parts/mecha_equipment/ME = new - ME = new /obj/item/mecha_parts/mecha_equipment/seat - ME.attach(src) - -//corvega - -/obj/mecha/combat/phazon/corvega - name = "\improper Corvega" - desc = "A old vehicule, runing on powercell." - icon = 'icons/mecha/corvega.dmi' - icon_state = "corvega" - pixel_x = -15 - pixel_y = 0 - can_be_locked = TRUE - dna_lock - step_in = 0.75 - opacity = 0 - dir_in = 8 - step_energy_drain = 1 - max_temperature = 20000 - max_integrity = 280 - armor = ARMOR_VALUE_MEDIUM - max_equip = 3 - stepsound = 'sound/f13machines/buggy_loop.ogg' - turnsound = 'sound/f13machines/buggy_loop.ogg' - wreckage = /obj/structure/mecha_wreckage/buggy - -/obj/mecha/combat/phazon/corvega/go_out() - ..() - update_icon() - -/obj/mecha/combat/phazon/corvega/moved_inside(mob/living/carbon/human/H) - ..() - update_icon() - -/obj/mecha/combat/phazon/corvega/GrantActions(mob/living/user, human_occupant = 0) - cycle_action.Grant(user, src) - lights_action.Grant(user, src) - stats_action.Grant(user, src) - eject_action.Grant(user, src) - klaxon_action.Grant(user, src) - -/obj/mecha/combat/phazon/corvega/RemoveActions(mob/living/user, human_occupant = 0) - cycle_action.Remove(user) - lights_action.Remove(user) - stats_action.Remove(user) - eject_action.Remove(user) - klaxon_action.Remove(user) - -/obj/mecha/combat/phazon/corvega/loaded/Initialize() - . = ..() - var/obj/item/mecha_parts/mecha_equipment/ME = new - ME = new /obj/item/mecha_parts/mecha_equipment/seat - ME.attach(src) - ME = new /obj/item/mecha_parts/mecha_equipment/seat - ME.attach(src) - -//corvega police - -/obj/mecha/combat/phazon/corvega/police - name = "\improper Police Corvega" - desc = "A old vehicule, runing on powercell. Seems to have been the proprety of the PreWar Yuma PD." - icon = 'icons/mecha/corvega-police.dmi' - icon_state = "corvega" - pixel_x = -15 - pixel_y = 0 - can_be_locked = TRUE - dna_lock - step_in = 0.75 - opacity = 0 - dir_in = 8 - step_energy_drain = 1.3 - max_temperature = 20000 - max_integrity = 280 - armor = ARMOR_VALUE_MEDIUM - max_equip = 3 - stepsound = 'sound/f13machines/buggy_loop.ogg' - turnsound = 'sound/f13machines/buggy_loop.ogg' - wreckage = /obj/structure/mecha_wreckage/buggy - -/obj/mecha/combat/phazon/corvega/police/go_out() - ..() - update_icon() - -/obj/mecha/combat/phazon/corvega/police/moved_inside(mob/living/carbon/human/H) - ..() - update_icon() - -/obj/mecha/combat/phazon/corvega/police/GrantActions(mob/living/user, human_occupant = 0) - cycle_action.Grant(user, src) - lights_action.Grant(user, src) - stats_action.Grant(user, src) - eject_action.Grant(user, src) - klaxon_action.Grant(user, src) - sirens_action.Grant(user, src) - -/obj/mecha/combat/phazon/corvega/police/RemoveActions(mob/living/user, human_occupant = 0) - cycle_action.Remove(user) - lights_action.Remove(user) - stats_action.Remove(user) - eject_action.Remove(user) - klaxon_action.Remove(user) - sirens_action.Remove(user) - -/obj/mecha/combat/phazon/corvega/police/loaded/Initialize() - . = ..() - var/obj/item/mecha_parts/mecha_equipment/ME = new - ME = new /obj/item/mecha_parts/mecha_equipment/seat - ME.attach(src) - ME = new /obj/item/mecha_parts/mecha_equipment/seat - ME.attach(src) - -//pickuptruck - -/obj/mecha/combat/phazon/pickuptruck - name = "\improper pickup truck" - desc = "A old vehicule, runing on powercell." - icon = 'icons/mecha/pickuptruck.dmi' - icon_state = "pickuptruck" - pixel_x = -15 - pixel_y = 0 - can_be_locked = TRUE - dna_lock - step_in = 1.4 - opacity = 0 - dir_in = 8 - step_energy_drain = 1 - max_temperature = 20000 - max_integrity = 300 - armor = ARMOR_VALUE_MEDIUM - max_equip = 4 - stepsound = 'sound/f13machines/buggy_loop.ogg' - turnsound = 'sound/f13machines/buggy_loop.ogg' - wreckage = /obj/structure/mecha_wreckage/buggy - -/obj/mecha/combat/phazon/pickuptruck/go_out() - ..() - update_icon() - -/obj/mecha/combat/phazon/pickuptruck/moved_inside(mob/living/carbon/human/H) - ..() - update_icon() - -/obj/mecha/combat/phazon/pickuptruck/GrantActions(mob/living/user, human_occupant = 0) - cycle_action.Grant(user, src) - lights_action.Grant(user, src) - stats_action.Grant(user, src) - eject_action.Grant(user, src) - klaxon_action.Grant(user, src) - -/obj/mecha/combat/phazon/pickuptruck/RemoveActions(mob/living/user, human_occupant = 0) - cycle_action.Remove(user) - lights_action.Remove(user) - stats_action.Remove(user) - eject_action.Remove(user) - klaxon_action.Remove(user) - -/obj/mecha/combat/phazon/pickuptruck/loaded/Initialize() - . = ..() - var/obj/item/mecha_parts/mecha_equipment/ME = new - ME = new /obj/item/mecha_parts/mecha_equipment/seat - ME.attach(src) - ME = new /obj/item/mecha_parts/mecha_equipment/seat - ME.attach(src) - ME = new /obj/item/mecha_parts/mecha_equipment/seat - ME.attach(src) - -//pickuptruck blue - -/obj/mecha/combat/phazon/pickuptruck/blue - name = "\improper pickup truck" - desc = "A old vehicule, runing on powercell." - icon = 'icons/mecha/pickuptruck-blue.dmi' - icon_state = "pickuptruck" - pixel_x = -15 - pixel_y = 0 - can_be_locked = TRUE - dna_lock - step_in = 1.4 - opacity = 0 - dir_in = 8 - step_energy_drain = 1 - max_temperature = 20000 - max_integrity = 300 - armor = ARMOR_VALUE_MEDIUM - max_equip = 4 - stepsound = 'sound/f13machines/buggy_loop.ogg' - turnsound = 'sound/f13machines/buggy_loop.ogg' - wreckage = /obj/structure/mecha_wreckage/buggy - -/obj/mecha/combat/phazon/pickuptruck/blue/go_out() - ..() - update_icon() - -/obj/mecha/combat/phazon/pickuptruck/blue/moved_inside(mob/living/carbon/human/H) - ..() - update_icon() - -/obj/mecha/combat/phazon/pickuptruck/blue/GrantActions(mob/living/user, human_occupant = 0) - cycle_action.Grant(user, src) - lights_action.Grant(user, src) - stats_action.Grant(user, src) - eject_action.Grant(user, src) - klaxon_action.Grant(user, src) - -/obj/mecha/combat/phazon/pickuptruck/blue/RemoveActions(mob/living/user, human_occupant = 0) - cycle_action.Remove(user) - lights_action.Remove(user) - stats_action.Remove(user) - eject_action.Remove(user) - klaxon_action.Remove(user) - -/obj/mecha/combat/phazon/pickuptruck/blue/loaded/Initialize() - . = ..() - var/obj/item/mecha_parts/mecha_equipment/ME = new - ME = new /obj/item/mecha_parts/mecha_equipment/seat - ME.attach(src) - ME = new /obj/item/mecha_parts/mecha_equipment/seat - ME.attach(src) - ME = new /obj/item/mecha_parts/mecha_equipment/seat - ME.attach(src) - -//pickuptruck bos - -/obj/mecha/combat/phazon/pickuptruck/bos - name = "\improper BoS pickup truck" - desc = "A old vehicule, runing on powercell." - icon = 'icons/mecha/pickuptruck-bos.dmi' - icon_state = "pickuptruck" - pixel_x = -15 - pixel_y = 0 - can_be_locked = TRUE - dna_lock - step_in = 1.4 - opacity = 0 - dir_in = 8 - step_energy_drain = 1 - max_temperature = 20000 - max_integrity = 300 - armor = ARMOR_VALUE_MEDIUM - max_equip = 4 - stepsound = 'sound/f13machines/buggy_loop.ogg' - turnsound = 'sound/f13machines/buggy_loop.ogg' - wreckage = /obj/structure/mecha_wreckage/buggy - -/obj/mecha/combat/phazon/pickuptruck/bos/go_out() - ..() - update_icon() - -/obj/mecha/combat/phazon/pickuptruck/bos/moved_inside(mob/living/carbon/human/H) - ..() - update_icon() - -/obj/mecha/combat/phazon/pickuptruck/bos/GrantActions(mob/living/user, human_occupant = 0) - cycle_action.Grant(user, src) - lights_action.Grant(user, src) - stats_action.Grant(user, src) - eject_action.Grant(user, src) - klaxon_action.Grant(user, src) - -/obj/mecha/combat/phazon/pickuptruck/bos/RemoveActions(mob/living/user, human_occupant = 0) - cycle_action.Remove(user) - lights_action.Remove(user) - stats_action.Remove(user) - eject_action.Remove(user) - klaxon_action.Remove(user) - -/obj/mecha/combat/phazon/pickuptruck/bos/loaded/Initialize() - . = ..() - var/obj/item/mecha_parts/mecha_equipment/ME = new - ME = new /obj/item/mecha_parts/mecha_equipment/seat - ME.attach(src) - ME = new /obj/item/mecha_parts/mecha_equipment/seat - ME.attach(src) - -//pickuptruck bos AND Kiana - -/obj/mecha/combat/phazon/pickuptruck/bos/armed - name = "\improper BoS pickup truck with gunner" - desc = "A old vehicule, runing on powercell. Its a A modified brotherhood truck, with the addition of a laser rifle at the back, maned by Paladin Kiana Davberg. Consumes more and is a more fragile." - icon = 'icons/mecha/pickuptruck-gunbos.dmi' - icon_state = "pickuptruck" - pixel_x = -15 - pixel_y = 0 - can_be_locked = TRUE - dna_lock - step_in = 1.4 - opacity = 0 - dir_in = 8 - step_energy_drain = 1.5 - max_temperature = 20000 - max_integrity = 300 - armor = ARMOR_VALUE_MEDIUM - max_equip = 4 - stepsound = 'sound/f13machines/buggy_loop.ogg' - turnsound = 'sound/f13machines/buggy_loop.ogg' - wreckage = /obj/structure/mecha_wreckage/buggy - -/obj/mecha/combat/phazon/pickuptruck/bos/armed/go_out() - ..() - update_icon() - -/obj/mecha/combat/phazon/pickuptruck/bos/armed/moved_inside(mob/living/carbon/human/H) - ..() - update_icon() - -/obj/mecha/combat/phazon/pickuptruck/bos/armed/GrantActions(mob/living/user, human_occupant = 0) - cycle_action.Grant(user, src) - lights_action.Grant(user, src) - stats_action.Grant(user, src) - eject_action.Grant(user, src) - klaxon_action.Grant(user, src) - -/obj/mecha/combat/phazon/pickuptruck/bos/armed/RemoveActions(mob/living/user, human_occupant = 0) - cycle_action.Remove(user) - lights_action.Remove(user) - stats_action.Remove(user) - eject_action.Remove(user) - klaxon_action.Remove(user) - -/obj/mecha/combat/phazon/pickuptruck/bos/armed/loaded/Initialize() - . = ..() - var/obj/item/mecha_parts/mecha_equipment/ME = new - ME = new /obj/item/mecha_parts/mecha_equipment/seat - ME.attach(src) - ME = new /obj/item/mecha_parts/mecha_equipment/seat - ME.attach(src) - -//truckcaravan - -/obj/mecha/combat/phazon/truckcaravan - name = "\improper Truck caravan" - desc = "A vehicle, not very powerfull or solid, running on a power cell... Okay, its a lie. Its pulled by two brahmins...The cell is here to make sure that some componant of the half buggy pulled by brahmins works." - icon = 'icons/mecha/truckcaravan.dmi' - icon_state = "truckcaravan" - pixel_x = -20 - pixel_y = 0 - can_be_locked = TRUE - dna_lock - step_in = 1.6 - opacity = 0 - dir_in = 8 - step_energy_drain = 0.6 - max_temperature = 20000 - max_integrity = 250 - armor = ARMOR_VALUE_HEAVY - max_equip = 2 - stepsound = 'sound/effects/footstep/gallop2.ogg' - turnsound = 'sound/effects/footstep/gallop1.ogg' - wreckage = /obj/structure/mecha_wreckage/buggy - -/obj/mecha/combat/phazon/truckcaravan/go_out() - ..() - update_icon() - -/obj/mecha/combat/phazon/truckcaravan/moved_inside(mob/living/carbon/human/H) - ..() - update_icon() - -/obj/mecha/combat/phazon/truckcaravan/GrantActions(mob/living/user, human_occupant = 0) - cycle_action.Grant(user, src) - lights_action.Grant(user, src) - stats_action.Grant(user, src) - eject_action.Grant(user, src) - klaxon_action.Grant(user, src) - -/obj/mecha/combat/phazon/truckcaravan/RemoveActions(mob/living/user, human_occupant = 0) - cycle_action.Remove(user) - lights_action.Remove(user) - stats_action.Remove(user) - eject_action.Remove(user) - klaxon_action.Remove(user) - -/obj/mecha/combat/phazon/truckcaravan/loaded/Initialize() - . = ..() - var/obj/item/mecha_parts/mecha_equipment/ME = new - ME = new /obj/item/mecha_parts/mecha_equipment/seat - ME.attach(src) diff --git a/code/game/mecha/equipment/mecha_equipment.dm b/code/game/mecha/equipment/mecha_equipment.dm index de211d0daa9..637445483f7 100644 --- a/code/game/mecha/equipment/mecha_equipment.dm +++ b/code/game/mecha/equipment/mecha_equipment.dm @@ -1,6 +1,10 @@ //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_WEAPON "weapon" +#define EQUIP_UTILITY "utility" +#define EQUIP_MISC "misc" + /obj/item/mecha_parts/mecha_equipment name = "mecha equipment" icon = 'icons/mecha/mecha_equipment.dmi' @@ -20,6 +24,7 @@ var/selectable = 1 // Set to 0 for passive equipment such as mining scanner or armor plates var/harmful = FALSE //Controls if equipment can be used to attack by a pacifist. //var/destroy_sound = 'sound/mecha/critdestr.ogg' + var/equip_type = EQUIP_UTILITY /obj/item/mecha_parts/mecha_equipment/proc/update_chassis_page() if(chassis) @@ -118,11 +123,26 @@ if(!chassis || chassis.loc != C || src != chassis.selected || !(get_dir(chassis, target)&chassis.dir)) return 0 -/obj/item/mecha_parts/mecha_equipment/proc/can_attach(obj/mecha/M) - if(M.equipment.len + output += {"
Equipment
" - + for(var/obj/item/mecha_parts/mecha_equipment/W in weapon_equipment) + output += "Weapon Module: [W.name] Detach
" + for(var/obj/item/mecha_parts/mecha_equipment/W in utility_equipment) + output += "Utility Module: [W.name] Detach
" + for(var/obj/item/mecha_parts/mecha_equipment/W in misc_equipment) + output += "Miscellaneous Module: [W.name] Detach
" + output += {"Available weapon slots: [max_weapons_equip-weapon_equipment.len]
+ Available utility slots: [max_utility_equip-utility_equipment.len]
+ Available miscellaneous slots: [max_misc_equip-misc_equipment.len]
+ + "} + return output /obj/mecha/proc/get_equipment_list() //outputs mecha equipment list in html if(!equipment.len) return - . = "Equipment:
" + var/output = "Equipment:
" for(var/obj/item/mecha_parts/mecha_equipment/MT in equipment) - . += "
[MT.get_equip_info()]
" - . += "
" + output += "
[MT.get_equip_info()]
" + output += "
" + return output diff --git a/code/game/mecha/medical/medical.dm b/code/game/mecha/medical/medical.dm index 00183443adf..f35ac866784 100644 --- a/code/game/mecha/medical/medical.dm +++ b/code/game/mecha/medical/medical.dm @@ -4,7 +4,9 @@ deflect_chance = 0 light_power = 9 light_range = 10 - max_equip = 4 + max_utility_equip = 3 + max_weapons_equip = 1 + max_misc_equip = 3 /obj/mecha/medical/mechturn(direction) setDir(direction) diff --git a/code/game/mecha/working/ripley.dm b/code/game/mecha/working/ripley.dm index 9456580ad06..ae7d1a91ecb 100644 --- a/code/game/mecha/working/ripley.dm +++ b/code/game/mecha/working/ripley.dm @@ -6,7 +6,9 @@ max_temperature = 20000 max_integrity = 300 armor = ARMOR_VALUE_MEDIUM - max_equip = 6 + max_utility_equip = 4 + max_weapons_equip = 2 + max_misc_equip = 2 wreckage = /obj/structure/mecha_wreckage/ripley var/list/cargo = new var/cargo_capacity = 15 @@ -41,7 +43,9 @@ resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF lights_power = 7 armor = ARMOR_VALUE_MEDIUM - max_equip = 5 // More armor, less tools + max_utility_equip = 3 + max_weapons_equip = 1 + max_misc_equip = 2 wreckage = /obj/structure/mecha_wreckage/ripley/firefighter @@ -85,7 +89,9 @@ lights_power = 7 step_energy_drain = 30 //slightly higher energy drain since you movin those wheels FAST armor = ARMOR_VALUE_MEDIUM - max_equip = 5 + max_utility_equip = 3 + max_weapons_equip = 1 + max_misc_equip = 2 wreckage = /obj/structure/mecha_wreckage/clarke cargo_capacity = 10 canstrafe = FALSE diff --git a/hailmary.dme b/hailmary.dme index 7d4d50bb4a4..3f40b9415df 100644 --- a/hailmary.dme +++ b/hailmary.dme @@ -556,7 +556,8 @@ #include "code\datums\components\crafting\recipes\recipes_tools.dm" #include "code\datums\components\crafting\recipes\recipes_tribal.dm" #include "code\datums\components\crafting\recipes\recipes_weapon_and_ammo.dm" -#include "code\datums\components\crafting\recipes\vehicle_parts.dm" +#include "code\datums\components\crafting\recipes\vehicles\vehicle_parts.dm" +#include "code\datums\components\crafting\recipes\vehicles\vehicle_weapons.dm" #include "code\datums\components\fantasy\_fantasy.dm" #include "code\datums\components\fantasy\affix.dm" #include "code\datums\components\fantasy\prefixes.dm" @@ -1003,6 +1004,15 @@ #include "code\game\mecha\equipment\tools\work_tools.dm" #include "code\game\mecha\equipment\weapons\mecha_ammo.dm" #include "code\game\mecha\equipment\weapons\weapons.dm" +#include "code\game\mecha\equipment\weapons\fallout\ballistic.dm" +#include "code\game\mecha\equipment\weapons\fallout\energy.dm" +#include "code\game\mecha\fallout\armored.dm" +#include "code\game\mecha\fallout\birds.dm" +#include "code\game\mecha\fallout\buggies.dm" +#include "code\game\mecha\fallout\carriages.dm" +#include "code\game\mecha\fallout\cars.dm" +#include "code\game\mecha\fallout\pickuptrucks.dm" +#include "code\game\mecha\fallout\trucks.dm" #include "code\game\mecha\medical\medical.dm" #include "code\game\mecha\medical\medigax.dm" #include "code\game\mecha\medical\odysseus.dm" diff --git a/icons/mecha/armoredjeep.dmi b/icons/mecha/armoredjeep.dmi new file mode 100644 index 00000000000..33044cb5781 Binary files /dev/null and b/icons/mecha/armoredjeep.dmi differ diff --git a/icons/mecha/mecha_equipment.dmi b/icons/mecha/mecha_equipment.dmi index 5e277af7cca..71ba107315e 100644 Binary files a/icons/mecha/mecha_equipment.dmi and b/icons/mecha/mecha_equipment.dmi differ