Skip to content

Commit

Permalink
Adds the ICC LVRT 'Fallow' vehicle. (#16597)
Browse files Browse the repository at this point in the history
Co-authored-by: ivanmixo <[email protected]>
  • Loading branch information
Pariah919 and ivanmixo authored Oct 19, 2024
1 parent e8af3c0 commit be75feb
Show file tree
Hide file tree
Showing 21 changed files with 361 additions and 0 deletions.
135 changes: 135 additions & 0 deletions _maps/interiors/icc_recontank.dmm
Original file line number Diff line number Diff line change
@@ -0,0 +1,135 @@
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
"a" = (
/turf/closed/interior/apc/nineteen,
/area/interior/tank)
"b" = (
/turf/closed/interior/tank/door,
/area/interior/tank)
"f" = (
/obj/structure/bed/chair/vehicle_crew/gunner,
/turf/open/interior/apc/twentynine,
/area/interior/tank)
"h" = (
/turf/closed/interior/apc/five,
/area/interior/tank)
"j" = (
/turf/closed/interior/apc/one,
/area/interior/tank)
"l" = (
/obj/structure/bed/chair/loader_seat{
pixel_y = -5
},
/obj/structure/periscope,
/turf/open/interior/apc/nine,
/area/interior/tank)
"r" = (
/turf/closed/interior/tank/twentythree,
/area/interior/tank)
"t" = (
/turf/closed/interior/apc/twentyfour,
/area/interior/tank)
"u" = (
/obj/structure/gun_breech/lvrt{
pixel_x = -13;
pixel_y = -8
},
/obj/structure/gun_breech/secondary/lvrt{
pixel_x = -21;
pixel_y = 4
},
/turf/closed/interior/tank/seventeen,
/area/interior/tank)
"v" = (
/turf/open/interior/apc/twentynine,
/area/interior/tank)
"w" = (
/turf/closed/interior/apc/twenty,
/area/interior/tank)
"x" = (
/turf/open/interior/apc/nine,
/area/interior/tank)
"z" = (
/turf/closed/interior/apc/thirteen,
/area/interior/tank)
"A" = (
/turf/closed/interior/apc/two,
/area/interior/tank)
"D" = (
/turf/closed/interior/apc/twentyeight,
/area/interior/tank)
"E" = (
/turf/closed/interior/apc/twelve,
/area/interior/tank)
"L" = (
/obj/structure/ammo_rack/primary/icc{
pixel_x = -1;
pixel_y = -9
},
/obj/structure/ammo_rack/secondary/icc{
pixel_x = 0;
pixel_y = -18
},
/turf/closed/interior/apc/two,
/area/interior/tank)
"M" = (
/turf/closed/interior/apc/twentyseven,
/area/interior/tank)
"S" = (
/obj/structure/bed/chair/vehicle_crew/driver{
pixel_y = -6
},
/turf/open/interior/apc/eleven,
/area/interior/tank)
"V" = (
/turf/closed/interior/apc/twentythree,
/area/interior/tank)
"X" = (
/obj/machinery/telecomms/relay/preset/telecomms/onboard/nondense,
/turf/closed/interior/apc/six,
/area/interior/tank)
"Z" = (
/turf/closed/interior/apc/four,
/area/interior/tank)

(1,1,1) = {"
j
z
b
z
a
"}
(2,1,1) = {"
A
x
v
v
M
"}
(3,1,1) = {"
Z
l
v
f
M
"}
(4,1,1) = {"
L
x
u
r
M
"}
(5,1,1) = {"
h
S
M
V
w
"}
(6,1,1) = {"
X
E
t
t
D
"}
2 changes: 2 additions & 0 deletions code/__DEFINES/calibers.dm
Original file line number Diff line number Diff line change
Expand Up @@ -86,5 +86,7 @@
#define CALIBER_20 "20mm" //Dualcannon

/// Vehicles
#define CALIBER_30X17MM "30x170mm" // SARDEN
#define CALIBER_76MM "76mm shell" // ICC LowVel
#define CALIBER_11X35 "11x35mm"
#define CALIBER_105MM "105mm" //MBT Main Cannon
2 changes: 2 additions & 0 deletions code/datums/interior/interior_icc_recontank.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
/datum/interior/armored/icc_lvrt
template = /datum/map_template/interior/icc_recontank
4 changes: 4 additions & 0 deletions code/datums/interior/map_templates.dm
Original file line number Diff line number Diff line change
Expand Up @@ -28,3 +28,7 @@
/datum/map_template/interior/som_tank
name = "SOM tank interior template"
filename = "som_tank"

/datum/map_template/interior/icc_recontank
name = "ICC Fallow Recon Vehicle Tracked interior template"
filename = "icc_recontank"
5 changes: 5 additions & 0 deletions code/datums/storage/subtypes/tank.dm
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,10 @@
/obj/item/ammo_magazine/tank/volkite_carronade,
/obj/item/ammo_magazine/tank/particle_lance,
/obj/item/ammo_magazine/tank/coilgun,
/obj/item/ammo_magazine/tank/icc_lowvel_cannon,
/obj/item/ammo_magazine/tank/icc_lowvel_cannon/high_explosive,
/obj/item/ammo_magazine/tank/sarden_clip,
/obj/item/ammo_magazine/tank/sarden_clip/high_explosive,
))

/datum/storage/tank/ammorack_secondary/New(atom/parent)
Expand All @@ -31,4 +35,5 @@
/obj/item/ammo_magazine/tank/secondary_cupola,
/obj/item/ammo_magazine/tank/secondary_flamer_tank,
/obj/item/ammo_magazine/tank/secondary_mlrs,
/obj/item/ammo_magazine/icc_mg,
))
1 change: 1 addition & 0 deletions code/game/objects/machinery/buttons.dm
Original file line number Diff line number Diff line change
Expand Up @@ -333,6 +333,7 @@
/obj/vehicle/sealed/armored/multitile/apc,
/obj/vehicle/sealed/armored/multitile/som_tank,
/obj/vehicle/sealed/armored/multitile/campaign,
/obj/vehicle/sealed/armored/multitile/icc_lvrt,
)

var/selected_vehicle = tgui_input_list(user, "Which vehicle do you want to spawn?", "Vehicle spawn", spawnable_vehicles)
Expand Down
9 changes: 9 additions & 0 deletions code/game/objects/machinery/vending/marine_vending.dm
Original file line number Diff line number Diff line change
Expand Up @@ -1587,6 +1587,15 @@
/obj/item/ammo_magazine/tank/coilgun = -1,
/obj/item/ammo_magazine/tank/secondary_mlrs = -1,
),
"ICC Assault Vehicle" = list(
/obj/item/armored_weapon/icc_lvrt_sarden = -1,
/obj/item/armored_weapon/icc_lvrt_cannon = -1,
/obj/item/armored_weapon/icc_coaxial = -1,
/obj/item/ammo_magazine/tank/sarden_clip/high_explosive = -1,
/obj/item/ammo_magazine/tank/sarden_clip = -1,
/obj/item/ammo_magazine/tank/icc_lowvel_cannon = -1,
/obj/item/ammo_magazine/tank/icc_lowvel_cannon/high_explosive = -1,
),
)

/obj/machinery/vending/valhalla_seasonal_req
Expand Down
37 changes: 37 additions & 0 deletions code/modules/projectiles/ammo_types/heavy_ammo.dm
Original file line number Diff line number Diff line change
Expand Up @@ -174,3 +174,40 @@

/datum/ammo/bullet/coilgun/on_hit_mob(mob/target_mob, obj/projectile/proj)
staggerstun(target_mob, proj, weaken = 0.2 SECONDS, slowdown = 1, knockback = 3)


// SARDEN

/datum/ammo/bullet/sarden
name = "heavy autocannon armor piercing"
hud_state = "alloy_spike"
hud_state_empty = "smartgun_empty"
ammo_behavior_flags = AMMO_BALLISTIC
damage = 40
penetration = 40
sundering = 3.5

/datum/ammo/bullet/sarden/high_explosive
name = "heavy autocannon high explosive"
hud_state = "alloy_spike"
hud_state_empty = "smartgun_empty"
ammo_behavior_flags = AMMO_BALLISTIC
damage = 25
penetration = 30
sundering = 0.5
max_range = 21

/datum/ammo/bullet/sarden/high_explosive/drop_nade(turf/T)
explosion(T, light_impact_range = 2, weak_impact_range = 4)

/datum/ammo/bullet/sarden/high_explosive/on_hit_mob(mob/target_mob, obj/projectile/proj)
drop_nade(get_turf(target_mob))

/datum/ammo/bullet/sarden/high_explosive/on_hit_obj(obj/target_obj, obj/projectile/proj)
drop_nade(target_obj.density ? get_step_towards(target_obj, proj) : target_obj.loc)

/datum/ammo/bullet/sarden/high_explosive/on_hit_turf(turf/target_turf, obj/projectile/proj)
drop_nade(target_turf.density ? get_step_towards(target_turf, proj) : target_turf)

/datum/ammo/bullet/sarden/high_explosive/do_at_max_range(turf/target_turf, obj/projectile/proj)
drop_nade(target_turf.density ? get_step_towards(target_turf, proj) : target_turf)
24 changes: 24 additions & 0 deletions code/modules/projectiles/ammo_types/rocket_ammo.dm
Original file line number Diff line number Diff line change
Expand Up @@ -613,3 +613,27 @@
proj.proj_max_range -= 5
return
proj.proj_max_range = 0

/datum/ammo/rocket/icc_lowvel_heat
name = "Low Velocity HEAT shell"
icon_state = "recoilless_rifle_heat"
hud_state = "shell_heat"
ammo_behavior_flags = AMMO_SNIPER
shell_speed = 1
damage = 180
penetration = 100
sundering = 0

/datum/ammo/rocket/icc_lowvel_heat/drop_nade(turf/T)
explosion(T, flash_range = 1)

/datum/ammo/rocket/icc_lowvel_high_explosive
name = "Low Velocity HE shell"
damage = 50
penetration = 100
sundering = 10
ammo_behavior_flags = AMMO_SNIPER // We want this to specifically go over onscreen range.
shell_speed = 1

/datum/ammo/rocket/icc_lowvel_high_explosive/drop_nade(turf/T)
explosion(T, 0, 2, 3, 0, 2)
37 changes: 37 additions & 0 deletions code/modules/vehicles/armored/ammo_magazine.dm
Original file line number Diff line number Diff line change
Expand Up @@ -150,3 +150,40 @@
icon_state = "sflamer"
max_rounds = 150
default_ammo = /datum/ammo/flamethrower/armored_spray

// ICC Recon Tank
/obj/item/ammo_magazine/tank/sarden_clip
name = "EM-2600 'SARDEN' APDS Clip (30mm)"
desc = "A 7 round clip for a EM-2600 Autocannon. Loaded with Armor Piercing rounds."
caliber = CALIBER_30X17MM
icon_state = "sarden_clip_apds"
max_rounds = 7
default_ammo = /datum/ammo/bullet/sarden

/obj/item/ammo_magazine/tank/sarden_clip/high_explosive
name = "EM-2600 'SARDEN' High Explosive Clip (30mm)"
desc = "A 7 round clip for a EM-2600 Autocannon. Loaded with High Explosive rounds."
caliber = CALIBER_30X17MM
icon_state = "sarden_clip_apds"
max_rounds = 7
default_ammo = /datum/ammo/bullet/sarden/high_explosive

/obj/item/ammo_magazine/tank/icc_lowvel_cannon
name = "EM-2500 HEAT shell (76mm)"
desc = "A 76mm HEAT shell filled for targeting hard targets."
caliber = CALIBER_76MM
icon_state = "icc_lvrt_cannon_heat"
w_class = WEIGHT_CLASS_NORMAL
default_ammo = /datum/ammo/rocket/icc_lowvel_heat
max_rounds = 1
loading_sound = 'sound/vehicles/weapons/ltb_reload.ogg'

/obj/item/ammo_magazine/tank/icc_lowvel_cannon/high_explosive
name = "EM-2500 HE shell (76mm)"
desc = "A 76mm HE shell filled for targeting large groups of soft targets."
caliber = CALIBER_76MM
icon_state = "icc_lvrt_cannon_heat"
default_ammo = /datum/ammo/rocket/icc_lowvel_high_explosive
max_rounds = 1
loading_sound = 'sound/vehicles/weapons/ltb_reload.ogg'

41 changes: 41 additions & 0 deletions code/modules/vehicles/armored/icc_armored_weapons.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
// Fallow weapons are below.
/obj/item/armored_weapon/icc_lvrt_sarden
name = "\improper EM-2600 'SARDEN' Autocannon"
desc = "A 30mm Autocannon for the LVRT 'Fallow'. A surprisingly powerful autocannon. Sadly, beltfeeding system was lost in the slew of budget cuts related to the system. It is loaded with 4 round clips."
icon_state = "icc_lvrt_autocannon"
fire_sound = SFX_AC_FIRE
ammo = /obj/item/ammo_magazine/tank/sarden_clip
accepted_ammo = list(/obj/item/ammo_magazine/tank/sarden_clip, /obj/item/ammo_magazine/tank/sarden_clip/high_explosive)
fire_mode = GUN_FIREMODE_AUTOMATIC
variance = 2
projectile_delay = 0.65 SECONDS
rearm_time = 0.5 SECONDS
hud_state_empty = "rifle_empty"

/obj/item/armored_weapon/icc_lvrt_cannon
name = "\improper EM-2500 Low Veloity Cannon"
desc = "A 76mm low velocity cannon for the LVRT 'Fallow'. It has slow travel speed and solid explosive performance. It is loaded with 76mm shells."
icon_state = "icc_lvrt_cannon"
fire_sound = SFX_AC_FIRE
ammo = /obj/item/ammo_magazine/tank/icc_lowvel_cannon
accepted_ammo = list(/obj/item/ammo_magazine/tank/icc_lowvel_cannon, /obj/item/ammo_magazine/tank/icc_lowvel_cannon/high_explosive)
variance = 0
projectile_delay = 1.5 SECONDS
rearm_time = 1.5 SECONDS
hud_state_empty = "rifle_empty"

// generic coax

/obj/item/armored_weapon/icc_coaxial
name = "EM-94 Coaxial Chain gun (10x26mm)"
desc = "A beltfed coaxial with ICC markings that spews lead. Requires the Barrel shroud and power system of a vehicle to use in any way shape and form. Can use either standard ML-41 Boxes or vehicle specific boxes."
icon_state = "icc_lvrt_coax"
fire_sound = 'sound/weapons/guns/fire/tgmc/kinetic/gun_mg60.ogg'
armored_weapon_flags = MODULE_SECONDARY|MODULE_FIXED_FIRE_ARC
ammo = /obj/item/ammo_magazine/icc_mg
accepted_ammo = list(/obj/item/ammo_magazine/icc_mg)
fire_mode = GUN_FIREMODE_AUTOMATIC
projectile_delay = 0.15 SECONDS
variance = 5
rearm_time = 3 SECONDS
hud_state_empty = "rifle_empty"
37 changes: 37 additions & 0 deletions code/modules/vehicles/armored/icc_recontank.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
/obj/vehicle/sealed/armored/multitile/icc_lvrt
name = "\improper LVRT 'Fallow' Recce Vehicle"
desc = "The Light Vehicle, Recce, Tracked 'Fallow' is an ICC reconnaissance vehicle built to go fast in order to scout out and poke at enemy positions. Accepts either a low velocity tank cannon or a SARDEN as armament."
icon = 'icons/obj/armored/2x2/icc_lvrt.dmi'
icon_state = "icc_lvrt"
turret_icon = 'icons/obj/armored/2x2/icc_lvrt_gun.dmi'
turret_icon_state = "icc_lvrt_turret"
damage_icon_path = 'icons/obj/armored/2x2/icc_lvrt_damage.dmi'
interior = /datum/interior/armored/icc_lvrt
hitbox = /obj/hitbox/medium
armored_flags = ARMORED_HAS_PRIMARY_WEAPON|ARMORED_HAS_SECONDARY_WEAPON|ARMORED_HAS_HEADLIGHTS|ARMORED_HAS_UNDERLAY
permitted_weapons = list(/obj/item/armored_weapon/icc_lvrt_sarden, /obj/item/armored_weapon/icc_lvrt_cannon, /obj/item/armored_weapon/icc_coaxial)
permitted_mods = list(/obj/item/tank_module/ability/smoke_launcher)
required_entry_skill = SKILL_LARGE_VEHICLE_DEFAULT
minimap_icon_state = "apc"
max_integrity = 450
soft_armor = list(MELEE = 40, BULLET = 60 , LASER = 60, ENERGY = 60, BOMB = 40, BIO = 60, FIRE = 40, ACID = 40)
max_occupants = 5 //Boy is TINY.
pixel_x = 0
pixel_y = -40
enter_delay = 0.5 SECONDS
ram_damage = 25
move_delay = 0.25 SECONDS
easy_load_list = list(
/obj/item/ammo_magazine/tank,
/obj/structure/largecrate,
/obj/structure/closet/crate,
)

/obj/vehicle/sealed/armored/multitile/icc_lvrt/enter_locations(atom/movable/entering_thing)
return list(get_step(src, REVERSE_DIR(dir)))

/obj/vehicle/sealed/armored/multitile/icc_lvrt/Initialize(mapload)
. = ..()
var/obj/item/armored_weapon/icc_coaxial/gun = new(src)
gun.attach(src)
gun.attach(src)
Loading

0 comments on commit be75feb

Please sign in to comment.