Francisca buffs, fixes maneuvers. (#15052)

This commit is contained in:
Matt Atlas
2022-11-07 19:30:10 +01:00
committed by GitHub
parent 5da09cca43
commit 03b78debc1
7 changed files with 88 additions and 19 deletions

View File

@@ -11,6 +11,7 @@
var/written_message
var/wielded = FALSE
var/caliber = SHIP_CALIBER_NONE
var/burst = 0 //If set to a number, this many projectiles will spawn to the side of the main projectile.
var/impact_type = SHIP_AMMO_IMPACT_HE //This decides what happens when the ammo hits. Is it a bunkerbuster? HE? AP?
var/ammunition_status = SHIP_AMMO_STATUS_GOOD //Currently unused, but will be relevant for chemical ammo.
var/ammunition_flags = SHIP_AMMO_FLAG_INFLAMMABLE|SHIP_AMMO_FLAG_VERY_HEAVY
@@ -187,6 +188,8 @@
icon_state = "small"
range = 250
anti_materiel_potential = 3
impact_sounds = list(BULLET_IMPACT_MEAT = SOUNDS_BULLET_MEAT, BULLET_IMPACT_METAL = SOUNDS_BULLET_METAL)
accuracy = 100
var/obj/item/ship_ammunition/ammo
var/primed = FALSE //If primed, we don't interact with map edges. Projectiles might spawn on a landmark at the edge of space, and we don't want them to get tp'd away.
var/hit_target = FALSE //First target we hit. Used to report if a hit was successful.
@@ -216,4 +219,14 @@
return ..()
/obj/item/projectile/ship_ammo/proc/on_translate(var/turf/entry_turf, var/target_turf) //This proc is called when the projectile enters a new ship's overmap zlevel.
return
if(ammo.burst)
for(var/i = 1 to ammo.burst)
var/turf/new_turf = get_random_turf_in_range(entry_turf, ammo.burst + rand(0, ammo.burst), 0, TRUE, FALSE)
var/obj/item/projectile/ship_ammo/pellet = new type
pellet.forceMove(new_turf)
pellet.ammo = new ammo.type
pellet.ammo.origin = ammo.origin
pellet.ammo.impact_type = ammo.impact_type
pellet.dir = dir
var/turf/front_turf = get_step(pellet, pellet.dir)
pellet.launch_projectile(front_turf)

View File

@@ -21,6 +21,8 @@
impact_type = SHIP_AMMO_IMPACT_FMJ
ammunition_flags = SHIP_AMMO_FLAG_INFLAMMABLE|SHIP_AMMO_FLAG_VERY_HEAVY|SHIP_AMMO_FLAG_INFLAMMABLE
caliber = SHIP_CALIBER_40MM
burst = 8
cookoff_heavy = 0
/obj/item/ship_ammunition/francisca/ap
name = "40mm AP ammunition box"
@@ -35,7 +37,7 @@
icon_state = "small"
damage = 50
armor_penetration = 50
penetrating = 1
penetrating = 2
/obj/item/projectile/ship_ammo/francisca/ap
name = "40mm AP bullet"

View File

@@ -20,6 +20,7 @@
caliber = SHIP_CALIBER_90MM
ammunition_behaviour = SHIP_AMMO_BEHAVIOUR_DUMBFIRE
projectile_type_override = /obj/item/projectile/ship_ammo/grauwolf
burst = 4
/obj/item/ship_ammunition/grauwolf_bundle/ap
name = "grauwolf armor-piercing flak bundle"
@@ -46,14 +47,4 @@
name = "armor-piercing flak"
damage = 50
armor_penetration = 50
penetrating = 2
/obj/item/projectile/ship_ammo/grauwolf/on_translate(var/turf/entry_turf, var/turf/target_turf)
for(var/i = 1 to 4)
var/turf/new_turf = get_random_turf_in_range(entry_turf, 5, 5, TRUE, TRUE)
var/obj/item/projectile/ship_ammo/grauwolf/burst = new(new_turf)
burst.ammo = new ammo.type
burst.ammo.impact_type = ammo.impact_type
var/turf/front_turf = get_step(new_turf, dir)
burst.dir = dir
burst.launch_projectile(front_turf)
penetrating = 2

View File

@@ -137,6 +137,7 @@
armor_penetration = 1000
penetrating = 100
hitscan = TRUE
impact_sounds = list(BULLET_IMPACT_MEAT = SOUNDS_LASER_MEAT, BULLET_IMPACT_METAL = SOUNDS_LASER_METAL)
muzzle_type = /obj/effect/projectile/muzzle/pulse
tracer_type = /obj/effect/projectile/tracer/pulse

View File

@@ -224,7 +224,7 @@
var/ndir = text2num(href_list["roll"])
if(ishuman(usr))
var/mob/living/carbon/human/H = usr
visible_message(SPAN_DANGER("[H] starts tilting the yoke all the way to the [ndir == WEST ? "right" : "left"]!"))
visible_message(SPAN_DANGER("[H] starts tilting the yoke all the way to the [ndir == WEST ? "left" : "right"]!"))
if(do_after(H, 1 SECOND))
connected.combat_roll(ndir)
@@ -232,7 +232,7 @@
var/ndir = text2num(href_list["turn"])
if(ishuman(usr))
var/mob/living/carbon/human/H = usr
visible_message(SPAN_DANGER("[H] starts twisting the yoke all the way to the [ndir == WEST ? "right" : "left"]!"))
visible_message(SPAN_DANGER("[H] starts twisting the yoke all the way to the [ndir == WEST ? "left" : "right"]!"))
if(do_after(H, 1 SECOND))
connected.combat_turn(ndir)

View File

@@ -273,7 +273,8 @@ var/const/OVERMAP_SPEED_CONSTANT = (1 SECOND)
/obj/effect/overmap/visitable/ship/proc/combat_roll(var/new_dir)
burn()
forceMove(get_step(src, new_dir))
var/dir_to_move = turn(dir, new_dir == WEST ? 90 : -90)
forceMove(get_step(src, dir_to_move))
for(var/mob/living/L in living_mob_list)
if(L.z in map_z)
to_chat(L, SPAN_DANGER("<font size=4>The ship rapidly inclines under your feet!</font>"))
@@ -286,10 +287,26 @@ var/const/OVERMAP_SPEED_CONSTANT = (1 SECOND)
/obj/effect/overmap/visitable/ship/proc/combat_turn(var/new_dir)
burn()
var/angle = 45
var/angle = -45
if(new_dir == WEST)
angle = -45
dir = turn(dir, angle)
angle = 45
var/direction = turn(dir, angle)
accelerate(direction, 1000)
if(direction & EAST)
speed[1] = abs(speed[1])
else if(direction & WEST)
if(speed[1] > 0)
speed[1] = -speed[1]
else
speed[1] = 0
if(direction & NORTH)
speed[2] = abs(speed[2])
else if(direction & SOUTH)
if(speed[2] > 0)
speed[2] = -speed[2]
else
speed[2] = 0
update_icon()
for(var/mob/living/L in living_mob_list)
if(L.z in map_z)
to_chat(L, SPAN_DANGER("The ship rapidly turns under your feet!"))