The DPRA enters the scene: the Hailstorm Ship (#15567)

This commit is contained in:
Alberyk
2023-01-19 12:12:38 -03:00
committed by GitHub
parent 788e06ddb5
commit 04268b3858
19 changed files with 30511 additions and 16 deletions
+8 -4
View File
@@ -26,14 +26,15 @@
var/storage_type = /obj/item/storage/toolbox/bike_storage
var/obj/item/storage/storage_compartment
var/datum/effect_system/ion_trail/ion
var/ion_type = /datum/effect_system/ion_trail
var/kickstand = TRUE
var/can_hover = TRUE
/obj/vehicle/bike/setup_vehicle()
..()
ion = new(src)
ion = new ion_type(src)
turn_off()
add_overlay(image('icons/obj/bike.dmi', "[icon_state]_off_overlay", MOB_LAYER + 1))
add_overlay(image(icon, "[icon_state]_off_overlay", MOB_LAYER + 1))
icon_state = "[bike_icon]_off"
if(storage_type)
storage_compartment = new storage_type(src)
@@ -178,10 +179,10 @@
cut_overlays()
if(on)
add_overlay(image('icons/obj/bike.dmi', "[bike_icon]_on_overlay", MOB_LAYER + 1))
add_overlay(image(icon, "[bike_icon]_on_overlay", MOB_LAYER + 1))
icon_state = "[bike_icon]_on"
else
add_overlay(image('icons/obj/bike.dmi', "[bike_icon]_off_overlay", MOB_LAYER + 1))
add_overlay(image(icon, "[bike_icon]_off_overlay", MOB_LAYER + 1))
icon_state = "[bike_icon]_off"
..()
@@ -194,6 +195,9 @@
/obj/vehicle/bike/Collide(var/atom/movable/AM)
. = ..()
collide_act(AM)
/obj/vehicle/bike/proc/collide_act(var/atom/movable/AM)
var/mob/living/M
if(!buckled)
return
+109
View File
@@ -0,0 +1,109 @@
/obj/vehicle/bike/wasp_torpedo
name = "wasp torpedo"
desc = "A manned torpedo used by the Al'mariist space forces."
icon = 'icons/obj/wasp_torpedo.dmi'
icon_state = "torpedo_off"
desc_info = "Click-drag yourself onto the torpedo to climb onto it.<br>\
- CTRL-click the torpedo to toggle the engine.<br>\
- ALT-click to toggle the kickstand which prevents movement by driving and dragging.<br>\
- Click the resist button or type \"resist\" in the command bar at the bottom of your screen to get off the torpedo.<br>\
- CTRL-SHIFT-click to cause it to charge and detonate on impact."
health = 300
maxhealth = 300
fire_dam_coeff = 0.5
brute_dam_coeff = 0.4
mob_offset_y = 1
bike_icon = "torpedo"
dir = EAST
land_speed = 3
space_speed = 1
storage_type = null
pixel_y = -16
pixel_x = -16
ion_type = /datum/effect_system/ion_trail/explosion
var/primmed = FALSE
/obj/item/mesmetron/Destroy()
STOP_PROCESSING(SSfast_process, src)
. = ..()
/obj/vehicle/bike/wasp_torpedo/collide_act(var/atom/movable/AM)
if(!AM.density)
return
if(!primmed)
return
torpedo_explosion()
/obj/vehicle/bike/wasp_torpedo/proc/torpedo_explosion()
STOP_PROCESSING(SSfast_process, src)
primmed = FALSE
if(prob(25) && buckled) //has a chance of being thrown off when it explodes
if(ishuman(buckled))
var/mob/living/carbon/human/C = buckled
C.visible_message(SPAN_DANGER ("\The [C] is thrown off from \the [src]!"))
unload(C)
C.throw_at(get_edge_target_turf(loc, loc.dir), 5, 1)
C.apply_effect(2, WEAKEN)
if(buckled)
unload(buckled)
if(ishuman(buckled))
var/mob/living/carbon/human/V = buckled
V.apply_effect(2, WEAKEN)
explosion(loc, 1, 2, 4, 8)
visible_message(SPAN_DANGER ("\The [src] detonates!"))
qdel(src)
/obj/vehicle/bike/wasp_torpedo/proc/prime(var/mob/user)
if(primmed)
if(user)
to_chat(src, SPAN_WARNING("The priming button is jammed. There is no turning back now."))
return
if(!on)
turn_on()
kickstand = FALSE
visible_message(SPAN_DANGER ("\The [src] begins to beep omnisouly before charging!"))
playsound(get_turf(src), 'sound/items/countdown.ogg', 75, 1, -3)
primmed = TRUE
land_speed = 1
space_speed = 1
START_PROCESSING(SSprocessing, src)
/obj/vehicle/bike/wasp_torpedo/CtrlShiftClick(var/mob/user)
prime(user)
/obj/vehicle/bike/wasp_torpedo/process()
if(!primmed)
return
Move(get_step(src, dir))
/obj/vehicle/bike/wasp_torpedo/turn_off()
if(primmed)
return
..()
/obj/vehicle/bike/wasp_torpedo/bullet_act(var/obj/item/projectile/Proj)
if(Proj.get_structure_damage())
if(prob(10))
torpedo_explosion()
..()
/obj/vehicle/bike/wasp_torpedo/ex_act(severity)
switch(severity)
if(1.0)
torpedo_explosion()
return
if(2.0)
if(prob(50))
torpedo_explosion()
..()