mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2025-12-21 15:42:35 +00:00
Adds the Ha'rron MK.IV light tank (#5567)
This pr adds a tank, reserved for a future event and adminbus. Sprites were made by kyres1. Adds some sounds to certain mecha actions, like loading crates or using a drill. Ports padded caps from baystation.
This commit is contained in:
@@ -666,6 +666,7 @@
|
|||||||
#include "code\game\mecha\combat\honker.dm"
|
#include "code\game\mecha\combat\honker.dm"
|
||||||
#include "code\game\mecha\combat\marauder.dm"
|
#include "code\game\mecha\combat\marauder.dm"
|
||||||
#include "code\game\mecha\combat\phazon.dm"
|
#include "code\game\mecha\combat\phazon.dm"
|
||||||
|
#include "code\game\mecha\combat\tank.dm"
|
||||||
#include "code\game\mecha\equipment\mecha_equipment.dm"
|
#include "code\game\mecha\equipment\mecha_equipment.dm"
|
||||||
#include "code\game\mecha\equipment\tracking_beacon.dm"
|
#include "code\game\mecha\equipment\tracking_beacon.dm"
|
||||||
#include "code\game\mecha\equipment\tools\medical_tools.dm"
|
#include "code\game\mecha\equipment\tools\medical_tools.dm"
|
||||||
|
|||||||
@@ -458,3 +458,8 @@ update_flag
|
|||||||
. = ..()
|
. = ..()
|
||||||
src.air_contents.adjust_gas("phoron", MolesForPressure())
|
src.air_contents.adjust_gas("phoron", MolesForPressure())
|
||||||
src.update_icon()
|
src.update_icon()
|
||||||
|
|
||||||
|
/obj/machinery/portable_atmospherics/canister/air/cold/Initialize()
|
||||||
|
. = ..()
|
||||||
|
src.air_contents.temperature = 283
|
||||||
|
src.update_icon()
|
||||||
|
|||||||
@@ -77,12 +77,12 @@
|
|||||||
else
|
else
|
||||||
return
|
return
|
||||||
M.updatehealth()
|
M.updatehealth()
|
||||||
src.occupant_message("You hit [target].")
|
src.occupant_message("You hit \the [target].")
|
||||||
src.visible_message("<font color='red'><b>[src.name] hits [target].</b></font>")
|
src.visible_message("<span class='danger'>\The [src] hits \the [target]!</span>")
|
||||||
else
|
else
|
||||||
step_away(M,src)
|
step_away(M,src)
|
||||||
src.occupant_message("You push [target] out of the way.")
|
src.occupant_message("You push \the [target] out of the way.")
|
||||||
src.visible_message("[src] pushes [target] out of the way.")
|
src.visible_message("\The [src] pushes \the [target] out of the way.")
|
||||||
|
|
||||||
melee_can_hit = 0
|
melee_can_hit = 0
|
||||||
if(do_after_mecha(melee_cooldown))
|
if(do_after_mecha(melee_cooldown))
|
||||||
@@ -93,8 +93,8 @@
|
|||||||
if(damtype == "brute")
|
if(damtype == "brute")
|
||||||
for(var/target_type in src.destroyable_obj)
|
for(var/target_type in src.destroyable_obj)
|
||||||
if(istype(target, target_type) && hascall(target, "attackby"))
|
if(istype(target, target_type) && hascall(target, "attackby"))
|
||||||
src.occupant_message("You hit [target].")
|
src.occupant_message("You hit \the [target].")
|
||||||
src.visible_message("<font color='red'><b>[src.name] hits [target]</b></font>")
|
src.visible_message("<span class='danger'>\The [src] hits \the [target]!</span>")
|
||||||
if(!istype(target, /turf/simulated/wall))
|
if(!istype(target, /turf/simulated/wall))
|
||||||
target:attackby(src,src.occupant)
|
target:attackby(src,src.occupant)
|
||||||
else if(prob(5))
|
else if(prob(5))
|
||||||
|
|||||||
@@ -29,8 +29,8 @@
|
|||||||
wreckage = /obj/effect/decal/mecha_wreckage/gygax/dark
|
wreckage = /obj/effect/decal/mecha_wreckage/gygax/dark
|
||||||
step_energy_drain = 5
|
step_energy_drain = 5
|
||||||
|
|
||||||
/obj/mecha/combat/gygax/dark/New()
|
/obj/mecha/combat/gygax/dark/Initialize()
|
||||||
..()
|
.= ..()
|
||||||
var/obj/item/mecha_parts/mecha_equipment/ME = new /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/scattershot
|
var/obj/item/mecha_parts/mecha_equipment/ME = new /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/scattershot
|
||||||
ME.attach(src)
|
ME.attach(src)
|
||||||
ME = new /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/flashbang/clusterbang
|
ME = new /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/flashbang/clusterbang
|
||||||
|
|||||||
@@ -17,8 +17,8 @@
|
|||||||
var/squeak = 0
|
var/squeak = 0
|
||||||
|
|
||||||
|
|
||||||
/obj/mecha/combat/honker/New()
|
/obj/mecha/combat/honker/Initialize()
|
||||||
..()
|
.= ..()
|
||||||
var/obj/item/mecha_parts/mecha_equipment/ME = new /obj/item/mecha_parts/mecha_equipment/weapon/honker
|
var/obj/item/mecha_parts/mecha_equipment/ME = new /obj/item/mecha_parts/mecha_equipment/weapon/honker
|
||||||
ME.attach(src)
|
ME.attach(src)
|
||||||
ME = new /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/banana_mortar
|
ME = new /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/banana_mortar
|
||||||
|
|||||||
@@ -44,8 +44,8 @@
|
|||||||
operation_req_access = list(access_syndicate)
|
operation_req_access = list(access_syndicate)
|
||||||
wreckage = /obj/effect/decal/mecha_wreckage/mauler
|
wreckage = /obj/effect/decal/mecha_wreckage/mauler
|
||||||
|
|
||||||
/obj/mecha/combat/marauder/New()
|
/obj/mecha/combat/marauder/Initialize()
|
||||||
..()
|
.= ..()
|
||||||
var/obj/item/mecha_parts/mecha_equipment/ME = new /obj/item/mecha_parts/mecha_equipment/weapon/energy/pulse
|
var/obj/item/mecha_parts/mecha_equipment/ME = new /obj/item/mecha_parts/mecha_equipment/weapon/energy/pulse
|
||||||
ME.attach(src)
|
ME.attach(src)
|
||||||
ME = new /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/explosive
|
ME = new /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/explosive
|
||||||
@@ -58,8 +58,8 @@
|
|||||||
src.smoke_system.attach(src)
|
src.smoke_system.attach(src)
|
||||||
return
|
return
|
||||||
|
|
||||||
/obj/mecha/combat/marauder/seraph/New()
|
/obj/mecha/combat/marauder/seraph/Initialize()
|
||||||
..()//Let it equip whatever is needed.
|
.= ..()
|
||||||
var/obj/item/mecha_parts/mecha_equipment/ME
|
var/obj/item/mecha_parts/mecha_equipment/ME
|
||||||
if(equipment.len)//Now to remove it and equip anew.
|
if(equipment.len)//Now to remove it and equip anew.
|
||||||
for(ME in equipment)
|
for(ME in equipment)
|
||||||
|
|||||||
@@ -21,8 +21,8 @@
|
|||||||
max_equip = 4
|
max_equip = 4
|
||||||
|
|
||||||
|
|
||||||
/obj/mecha/combat/phazon/equipped/New()
|
/obj/mecha/combat/phazon/equipped/Initialize()
|
||||||
..()
|
.= ..()
|
||||||
var/obj/item/mecha_parts/mecha_equipment/ME = new /obj/item/mecha_parts/mecha_equipment/tool/rcd
|
var/obj/item/mecha_parts/mecha_equipment/ME = new /obj/item/mecha_parts/mecha_equipment/tool/rcd
|
||||||
ME.attach(src)
|
ME.attach(src)
|
||||||
ME = new /obj/item/mecha_parts/mecha_equipment/gravcatapult
|
ME = new /obj/item/mecha_parts/mecha_equipment/gravcatapult
|
||||||
|
|||||||
135
code/game/mecha/combat/tank.dm
Normal file
135
code/game/mecha/combat/tank.dm
Normal file
@@ -0,0 +1,135 @@
|
|||||||
|
#define NOMINAL 0
|
||||||
|
#define FIRSTRUN 1
|
||||||
|
#define POWER 2
|
||||||
|
#define DAMAGE 3
|
||||||
|
#define IMAGE 4
|
||||||
|
#define WEAPONDOWN 5
|
||||||
|
|
||||||
|
/obj/mecha/combat/tank
|
||||||
|
name = "light adhomian tank"
|
||||||
|
desc = "The Ha'rron MK.IV light tank is an armored vehicle commonly used by tajaran military forces."
|
||||||
|
icon = 'icons/mecha/mecha_large.dmi'
|
||||||
|
icon_state = "tank"
|
||||||
|
initial_icon = "tank"
|
||||||
|
pixel_x = -16
|
||||||
|
step_in = 5
|
||||||
|
dir_in = 1
|
||||||
|
health = 800
|
||||||
|
deflect_chance = 20
|
||||||
|
damage_absorption = list("brute"=0.4,"fire"=1.1,"bullet"=0.5,"laser"=0.8,"energy"=0.8,"bomb"=0.7)
|
||||||
|
max_temperature = 30000
|
||||||
|
force = 40
|
||||||
|
w_class = 35
|
||||||
|
infra_luminosity = 4
|
||||||
|
wreckage = /obj/effect/decal/mecha_wreckage/tank
|
||||||
|
stepsound = 'sound/mecha/tanktread.ogg'
|
||||||
|
turnsound = 'sound/mecha/tanktread.ogg'
|
||||||
|
|
||||||
|
/obj/mecha/combat/tank/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/weapon/ballistic/cannon
|
||||||
|
ME.attach(src)
|
||||||
|
ME = new /obj/item/mecha_parts/mecha_equipment/tool/passenger
|
||||||
|
ME.attach(src)
|
||||||
|
ME = new /obj/item/mecha_parts/mecha_equipment/armor_booster/antiproj_armor_booster
|
||||||
|
ME.attach(src)
|
||||||
|
return
|
||||||
|
|
||||||
|
/obj/mecha/combat/tank/add_airtank()
|
||||||
|
internal_tank = new /obj/machinery/portable_atmospherics/canister/air/cold(src)
|
||||||
|
return internal_tank
|
||||||
|
|
||||||
|
/obj/mecha/combat/tank/Collide(var/atom/movable/AM)
|
||||||
|
. = ..()
|
||||||
|
if(!occupant)
|
||||||
|
return
|
||||||
|
if(isliving(AM))
|
||||||
|
if(ishuman(AM))
|
||||||
|
var/mob/living/carbon/human/H = AM
|
||||||
|
H.attack_log += "\[[time_stamp()]\]<font color='orange'> Was rammed by [src]</font>"
|
||||||
|
occupant.attack_log += text("\[[time_stamp()]\] <font color='red'>rammed[occupant.name] ([occupant.ckey]) rammed [H.name] ([H.ckey]) with the [src].</font>")
|
||||||
|
msg_admin_attack("[src] crashed into [key_name(H)] at (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[H.x];Y=[H.y];Z=[H.z]'>JMP</a>)" )
|
||||||
|
src.visible_message("<span class='danger'>\The [src] smashes into \the [H]!</span>")
|
||||||
|
playsound(src, 'sound/weapons/punch4.ogg', 50, 1)
|
||||||
|
H.apply_damage(30, BRUTE)
|
||||||
|
H.throw_at(get_edge_target_turf(loc, loc.dir), 5, 1)
|
||||||
|
H.apply_effect(4, WEAKEN)
|
||||||
|
return TRUE
|
||||||
|
|
||||||
|
if(isanimal(AM))
|
||||||
|
var/mob/living/simple_animal/C = AM
|
||||||
|
if(issmall(C))
|
||||||
|
src.visible_message("<span class='danger'>\The [src] runs over \the [C]!</span>")
|
||||||
|
C.gib()
|
||||||
|
return TRUE
|
||||||
|
else
|
||||||
|
src.visible_message("<span class='danger'>\The [src] smashes into \the [C]!</span>")
|
||||||
|
playsound(src, 'sound/weapons/punch4.ogg', 50, 1)
|
||||||
|
C.apply_damage(40, BRUTE)
|
||||||
|
return TRUE
|
||||||
|
|
||||||
|
else
|
||||||
|
var/mob/living/L = AM
|
||||||
|
src.visible_message("<span class='danger'>\The [src] smashes into \the [L]!</span>")
|
||||||
|
playsound(src, 'sound/weapons/punch4.ogg', 50, 1)
|
||||||
|
L.throw_at(get_edge_target_turf(loc, loc.dir), 5, 1)
|
||||||
|
L.apply_damage(30, BRUTE)
|
||||||
|
return TRUE
|
||||||
|
|
||||||
|
else
|
||||||
|
AM.ex_act(2)
|
||||||
|
|
||||||
|
/obj/mecha/combat/tank/trample(var/mob/living/H)
|
||||||
|
if(!occupant)
|
||||||
|
return
|
||||||
|
if(isliving(H))
|
||||||
|
if(ishuman(H))
|
||||||
|
var/mob/living/carbon/human/D = H
|
||||||
|
if(D.lying)
|
||||||
|
D.attack_log += "\[[time_stamp()]\]<font color='orange'> Was trampled by [src]</font>"
|
||||||
|
occupant.attack_log += text("\[[time_stamp()]\] <font color='red'>rammed[occupant.name] ([occupant.ckey]) trampled [D.name] ([D.ckey]) with the [src].</font>")
|
||||||
|
msg_admin_attack("[src] trampled [key_name(D)] at (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[D.x];Y=[D.y];Z=[D.z]'>JMP</a>)" )
|
||||||
|
src.visible_message("<span class='danger'>\The [src] runs over \the [D]!</span>")
|
||||||
|
D.apply_effect(8, WEAKEN)
|
||||||
|
D.apply_damage(60, BRUTE)
|
||||||
|
return TRUE
|
||||||
|
|
||||||
|
if(isanimal(H))
|
||||||
|
var/mob/living/simple_animal/C = H
|
||||||
|
if(issmall(C) || (C.stat == DEAD))
|
||||||
|
src.visible_message("<span class='danger'>\The [src] runs over \the [C]!</span>")
|
||||||
|
C.gib()
|
||||||
|
return TRUE
|
||||||
|
|
||||||
|
else
|
||||||
|
var/mob/living/L = H
|
||||||
|
src.visible_message("<span class='danger'>\The [src] runs over \the [L]!</span>")
|
||||||
|
L.apply_damage(60, BRUTE)
|
||||||
|
return TRUE
|
||||||
|
|
||||||
|
/obj/mecha/combat/tank/narrator_message(var/state)
|
||||||
|
var/file
|
||||||
|
switch(state)
|
||||||
|
if(NOMINAL)
|
||||||
|
file = 'sound/mecha/hatch-door-close.ogg'
|
||||||
|
if(FIRSTRUN)
|
||||||
|
file = 'sound/mecha/hatch-door-close.ogg'
|
||||||
|
if(POWER)
|
||||||
|
file = 'sound/mecha/lowpower.ogg'
|
||||||
|
if(DAMAGE)
|
||||||
|
file = 'sound/mecha/critdestr.ogg'
|
||||||
|
if(WEAPONDOWN)
|
||||||
|
file = 'sound/mecha/weapdestr.ogg'
|
||||||
|
else
|
||||||
|
|
||||||
|
playsound(src.loc, file, 100, 0, -6.6, environment=1)
|
||||||
|
|
||||||
|
|
||||||
|
#undef NOMINAL
|
||||||
|
#undef FIRSTRUN
|
||||||
|
#undef POWER
|
||||||
|
#undef DAMAGE
|
||||||
|
#undef IMAGE
|
||||||
|
#undef WEAPONDOWN
|
||||||
@@ -34,6 +34,7 @@
|
|||||||
|
|
||||||
occupant_message("You lift [target] and start to load it into cargo compartment.")
|
occupant_message("You lift [target] and start to load it into cargo compartment.")
|
||||||
chassis.visible_message("[chassis] lifts [target] and starts to load it into cargo compartment.")
|
chassis.visible_message("[chassis] lifts [target] and starts to load it into cargo compartment.")
|
||||||
|
playsound(src.loc, 'sound/mecha/hydraulic.ogg', 50, 1, -1)
|
||||||
set_ready_state(0)
|
set_ready_state(0)
|
||||||
chassis.use_power(energy_drain)
|
chassis.use_power(energy_drain)
|
||||||
O.anchored = 1
|
O.anchored = 1
|
||||||
@@ -87,6 +88,7 @@
|
|||||||
chassis.use_power(energy_drain)
|
chassis.use_power(energy_drain)
|
||||||
chassis.visible_message("<span class='danger'>\The [chassis] starts to drill \the [target]</span>", "<span class='warning'>You hear a large drill.</span>")
|
chassis.visible_message("<span class='danger'>\The [chassis] starts to drill \the [target]</span>", "<span class='warning'>You hear a large drill.</span>")
|
||||||
occupant_message("<span class='danger'>You start to drill \the [target]</span>")
|
occupant_message("<span class='danger'>You start to drill \the [target]</span>")
|
||||||
|
playsound(src.loc, 'sound/mecha/mechdrill.ogg', 50, 1, -1)
|
||||||
var/T = chassis.loc
|
var/T = chassis.loc
|
||||||
var/C = target.loc //why are these backwards? we may never know -Pete
|
var/C = target.loc //why are these backwards? we may never know -Pete
|
||||||
if(do_after_cooldown(target))
|
if(do_after_cooldown(target))
|
||||||
@@ -141,6 +143,7 @@
|
|||||||
chassis.use_power(energy_drain)
|
chassis.use_power(energy_drain)
|
||||||
chassis.visible_message("<span class='danger'>\The [chassis] starts to drill \the [target]</span>", "<span class='warning'>You hear a large drill.</span>")
|
chassis.visible_message("<span class='danger'>\The [chassis] starts to drill \the [target]</span>", "<span class='warning'>You hear a large drill.</span>")
|
||||||
occupant_message("<span class='danger'>You start to drill \the [target]</span>")
|
occupant_message("<span class='danger'>You start to drill \the [target]</span>")
|
||||||
|
playsound(src.loc, 'sound/mecha/mechdrill.ogg', 50, 1, -1)
|
||||||
var/T = chassis.loc
|
var/T = chassis.loc
|
||||||
var/C = target.loc //why are these backwards? we may never know -Pete
|
var/C = target.loc //why are these backwards? we may never know -Pete
|
||||||
if(do_after_cooldown(target))
|
if(do_after_cooldown(target))
|
||||||
|
|||||||
@@ -84,6 +84,7 @@
|
|||||||
return
|
return
|
||||||
if(M.cell)
|
if(M.cell)
|
||||||
M.occupant_message("<span class='notice'>Now charging...</span>")
|
M.occupant_message("<span class='notice'>Now charging...</span>")
|
||||||
|
playsound(M, 'sound/mecha/powerup.ogg', 50, 1)
|
||||||
charging = M
|
charging = M
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|||||||
@@ -108,6 +108,9 @@
|
|||||||
// Process() iterator count.
|
// Process() iterator count.
|
||||||
var/process_ticks = 0
|
var/process_ticks = 0
|
||||||
|
|
||||||
|
var/stepsound = 'sound/mecha/mechstep.ogg'
|
||||||
|
var/turnsound = 'sound/mecha/mechturn.ogg'
|
||||||
|
|
||||||
/obj/mecha/drain_power(var/drain_check)
|
/obj/mecha/drain_power(var/drain_check)
|
||||||
|
|
||||||
if(drain_check)
|
if(drain_check)
|
||||||
@@ -118,8 +121,11 @@
|
|||||||
|
|
||||||
return cell.drain_power(drain_check)
|
return cell.drain_power(drain_check)
|
||||||
|
|
||||||
/obj/mecha/New()
|
/obj/mecha/Initialize()
|
||||||
..()
|
.= ..()
|
||||||
|
|
||||||
|
START_PROCESSING(SSfast_process, src)
|
||||||
|
|
||||||
events = new
|
events = new
|
||||||
|
|
||||||
icon_state += "-open"
|
icon_state += "-open"
|
||||||
@@ -135,10 +141,6 @@
|
|||||||
|
|
||||||
spark_system = bind_spark(src, 2)
|
spark_system = bind_spark(src, 2)
|
||||||
|
|
||||||
/obj/mecha/Initialize()
|
|
||||||
. = ..()
|
|
||||||
|
|
||||||
START_PROCESSING(SSfast_process, src)
|
|
||||||
|
|
||||||
/obj/mecha/Destroy()
|
/obj/mecha/Destroy()
|
||||||
STOP_PROCESSING(SSfast_process, src)
|
STOP_PROCESSING(SSfast_process, src)
|
||||||
@@ -446,20 +448,21 @@
|
|||||||
|
|
||||||
/obj/mecha/proc/mechturn(direction)
|
/obj/mecha/proc/mechturn(direction)
|
||||||
set_dir(direction)
|
set_dir(direction)
|
||||||
playsound(src,'sound/mecha/mechturn.ogg',40,1)
|
if(turnsound)
|
||||||
|
playsound(src,turnsound,40,1)
|
||||||
return 1
|
return 1
|
||||||
|
|
||||||
/obj/mecha/proc/mechstep(direction)
|
/obj/mecha/proc/mechstep(direction)
|
||||||
var/result = step(src,direction)
|
var/result = step(src,direction)
|
||||||
if(result)
|
if(result && stepsound)
|
||||||
playsound(src,'sound/mecha/mechstep.ogg',40,1)
|
playsound(src,stepsound,40,1)
|
||||||
return result
|
return result
|
||||||
|
|
||||||
|
|
||||||
/obj/mecha/proc/mechsteprand()
|
/obj/mecha/proc/mechsteprand()
|
||||||
var/result = step_rand(src)
|
var/result = step_rand(src)
|
||||||
if(result)
|
if(result && stepsound)
|
||||||
playsound(src,'sound/mecha/mechstep.ogg',40,1)
|
playsound(src,stepsound,40,1)
|
||||||
return result
|
return result
|
||||||
|
|
||||||
/obj/mecha/Collide(var/atom/obstacle)
|
/obj/mecha/Collide(var/atom/obstacle)
|
||||||
@@ -999,7 +1002,7 @@
|
|||||||
mechstep(dir)
|
mechstep(dir)
|
||||||
sleep(2)
|
sleep(2)
|
||||||
mechstep(dir)
|
mechstep(dir)
|
||||||
src.visible_message("<span class='danger'>[src.name] lunges forward clumsily!</span>")
|
src.visible_message("<span class='danger'>\The [src] lunges forward clumsily!</span>")
|
||||||
done = 1
|
done = 1
|
||||||
return
|
return
|
||||||
|
|
||||||
@@ -2108,7 +2111,8 @@
|
|||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
|
/obj/mecha/proc/trample(var/mob/living/H)
|
||||||
|
return
|
||||||
|
|
||||||
/////////////
|
/////////////
|
||||||
|
|
||||||
|
|||||||
@@ -15,10 +15,10 @@
|
|||||||
var/list/crowbar_salvage
|
var/list/crowbar_salvage
|
||||||
var/salvage_num = 5
|
var/salvage_num = 5
|
||||||
|
|
||||||
New()
|
/obj/effect/decal/mecha_wreckage/New()
|
||||||
..()
|
..()
|
||||||
crowbar_salvage = new
|
crowbar_salvage = new
|
||||||
return
|
return
|
||||||
|
|
||||||
/obj/effect/decal/mecha_wreckage/ex_act(severity)
|
/obj/effect/decal/mecha_wreckage/ex_act(severity)
|
||||||
if(severity < 2)
|
if(severity < 2)
|
||||||
@@ -80,20 +80,20 @@
|
|||||||
name = "Gygax wreckage"
|
name = "Gygax wreckage"
|
||||||
icon_state = "gygax-broken"
|
icon_state = "gygax-broken"
|
||||||
|
|
||||||
New()
|
/obj/effect/decal/mecha_wreckage/gygax/New()
|
||||||
..()
|
..()
|
||||||
var/list/parts = list(/obj/item/mecha_parts/part/gygax_torso,
|
var/list/parts = list(/obj/item/mecha_parts/part/gygax_torso,
|
||||||
/obj/item/mecha_parts/part/gygax_head,
|
/obj/item/mecha_parts/part/gygax_head,
|
||||||
/obj/item/mecha_parts/part/gygax_left_arm,
|
/obj/item/mecha_parts/part/gygax_left_arm,
|
||||||
/obj/item/mecha_parts/part/gygax_right_arm,
|
/obj/item/mecha_parts/part/gygax_right_arm,
|
||||||
/obj/item/mecha_parts/part/gygax_left_leg,
|
/obj/item/mecha_parts/part/gygax_left_leg,
|
||||||
/obj/item/mecha_parts/part/gygax_right_leg)
|
/obj/item/mecha_parts/part/gygax_right_leg)
|
||||||
for(var/i=0;i<2;i++)
|
for(var/i=0;i<2;i++)
|
||||||
if(!isemptylist(parts) && prob(40))
|
if(!isemptylist(parts) && prob(40))
|
||||||
var/part = pick(parts)
|
var/part = pick(parts)
|
||||||
welder_salvage += part
|
welder_salvage += part
|
||||||
parts -= part
|
parts -= part
|
||||||
return
|
return
|
||||||
|
|
||||||
/obj/effect/decal/mecha_wreckage/gygax/dark
|
/obj/effect/decal/mecha_wreckage/gygax/dark
|
||||||
name = "Dark Gygax wreckage"
|
name = "Dark Gygax wreckage"
|
||||||
@@ -116,38 +116,38 @@
|
|||||||
name = "Ripley wreckage"
|
name = "Ripley wreckage"
|
||||||
icon_state = "ripley-broken"
|
icon_state = "ripley-broken"
|
||||||
|
|
||||||
New()
|
/obj/effect/decal/mecha_wreckage/ripley/New()
|
||||||
..()
|
..()
|
||||||
var/list/parts = list(/obj/item/mecha_parts/part/ripley_torso,
|
var/list/parts = list(/obj/item/mecha_parts/part/ripley_torso,
|
||||||
/obj/item/mecha_parts/part/ripley_left_arm,
|
/obj/item/mecha_parts/part/ripley_left_arm,
|
||||||
/obj/item/mecha_parts/part/ripley_right_arm,
|
/obj/item/mecha_parts/part/ripley_right_arm,
|
||||||
/obj/item/mecha_parts/part/ripley_left_leg,
|
/obj/item/mecha_parts/part/ripley_left_leg,
|
||||||
/obj/item/mecha_parts/part/ripley_right_leg)
|
/obj/item/mecha_parts/part/ripley_right_leg)
|
||||||
for(var/i=0;i<2;i++)
|
for(var/i=0;i<2;i++)
|
||||||
if(!isemptylist(parts) && prob(40))
|
if(!isemptylist(parts) && prob(40))
|
||||||
var/part = pick(parts)
|
var/part = pick(parts)
|
||||||
welder_salvage += part
|
welder_salvage += part
|
||||||
parts -= part
|
parts -= part
|
||||||
return
|
return
|
||||||
|
|
||||||
/obj/effect/decal/mecha_wreckage/ripley/firefighter
|
/obj/effect/decal/mecha_wreckage/ripley/firefighter
|
||||||
name = "Firefighter wreckage"
|
name = "Firefighter wreckage"
|
||||||
icon_state = "firefighter-broken"
|
icon_state = "firefighter-broken"
|
||||||
|
|
||||||
New()
|
/obj/effect/decal/mecha_wreckage/ripley/firefighter/New()
|
||||||
..()
|
..()
|
||||||
var/list/parts = list(/obj/item/mecha_parts/part/ripley_torso,
|
var/list/parts = list(/obj/item/mecha_parts/part/ripley_torso,
|
||||||
/obj/item/mecha_parts/part/ripley_left_arm,
|
/obj/item/mecha_parts/part/ripley_left_arm,
|
||||||
/obj/item/mecha_parts/part/ripley_right_arm,
|
/obj/item/mecha_parts/part/ripley_right_arm,
|
||||||
/obj/item/mecha_parts/part/ripley_left_leg,
|
/obj/item/mecha_parts/part/ripley_left_leg,
|
||||||
/obj/item/mecha_parts/part/ripley_right_leg,
|
/obj/item/mecha_parts/part/ripley_right_leg,
|
||||||
/obj/item/clothing/suit/fire)
|
/obj/item/clothing/suit/fire)
|
||||||
for(var/i=0;i<2;i++)
|
for(var/i=0;i<2;i++)
|
||||||
if(!isemptylist(parts) && prob(40))
|
if(!isemptylist(parts) && prob(40))
|
||||||
var/part = pick(parts)
|
var/part = pick(parts)
|
||||||
welder_salvage += part
|
welder_salvage += part
|
||||||
parts -= part
|
parts -= part
|
||||||
return
|
return
|
||||||
|
|
||||||
/obj/effect/decal/mecha_wreckage/ripley/deathripley
|
/obj/effect/decal/mecha_wreckage/ripley/deathripley
|
||||||
name = "Death-Ripley wreckage"
|
name = "Death-Ripley wreckage"
|
||||||
@@ -157,21 +157,21 @@
|
|||||||
name = "Durand wreckage"
|
name = "Durand wreckage"
|
||||||
icon_state = "durand-broken"
|
icon_state = "durand-broken"
|
||||||
|
|
||||||
New()
|
/obj/effect/decal/mecha_wreckage/durand/New()
|
||||||
..()
|
..()
|
||||||
var/list/parts = list(
|
var/list/parts = list(
|
||||||
/obj/item/mecha_parts/part/durand_torso,
|
/obj/item/mecha_parts/part/durand_torso,
|
||||||
/obj/item/mecha_parts/part/durand_head,
|
/obj/item/mecha_parts/part/durand_head,
|
||||||
/obj/item/mecha_parts/part/durand_left_arm,
|
/obj/item/mecha_parts/part/durand_left_arm,
|
||||||
/obj/item/mecha_parts/part/durand_right_arm,
|
/obj/item/mecha_parts/part/durand_right_arm,
|
||||||
/obj/item/mecha_parts/part/durand_left_leg,
|
/obj/item/mecha_parts/part/durand_left_leg,
|
||||||
/obj/item/mecha_parts/part/durand_right_leg)
|
/obj/item/mecha_parts/part/durand_right_leg)
|
||||||
for(var/i=0;i<2;i++)
|
for(var/i=0;i<2;i++)
|
||||||
if(!isemptylist(parts) && prob(40))
|
if(!isemptylist(parts) && prob(40))
|
||||||
var/part = pick(parts)
|
var/part = pick(parts)
|
||||||
welder_salvage += part
|
welder_salvage += part
|
||||||
parts -= part
|
parts -= part
|
||||||
return
|
return
|
||||||
|
|
||||||
/obj/effect/decal/mecha_wreckage/phazon
|
/obj/effect/decal/mecha_wreckage/phazon
|
||||||
name = "Phazon wreckage"
|
name = "Phazon wreckage"
|
||||||
@@ -182,22 +182,31 @@
|
|||||||
name = "Odysseus wreckage"
|
name = "Odysseus wreckage"
|
||||||
icon_state = "odysseus-broken"
|
icon_state = "odysseus-broken"
|
||||||
|
|
||||||
New()
|
/obj/effect/decal/mecha_wreckage/odysseus/New()
|
||||||
..()
|
..()
|
||||||
var/list/parts = list(
|
var/list/parts = list(
|
||||||
/obj/item/mecha_parts/part/odysseus_torso,
|
/obj/item/mecha_parts/part/odysseus_torso,
|
||||||
/obj/item/mecha_parts/part/odysseus_head,
|
/obj/item/mecha_parts/part/odysseus_head,
|
||||||
/obj/item/mecha_parts/part/odysseus_left_arm,
|
/obj/item/mecha_parts/part/odysseus_left_arm,
|
||||||
/obj/item/mecha_parts/part/odysseus_right_arm,
|
/obj/item/mecha_parts/part/odysseus_right_arm,
|
||||||
/obj/item/mecha_parts/part/odysseus_left_leg,
|
/obj/item/mecha_parts/part/odysseus_left_leg,
|
||||||
/obj/item/mecha_parts/part/odysseus_right_leg)
|
/obj/item/mecha_parts/part/odysseus_right_leg)
|
||||||
for(var/i=0;i<2;i++)
|
for(var/i=0;i<2;i++)
|
||||||
if(!isemptylist(parts) && prob(40))
|
if(!isemptylist(parts) && prob(40))
|
||||||
var/part = pick(parts)
|
var/part = pick(parts)
|
||||||
welder_salvage += part
|
welder_salvage += part
|
||||||
parts -= part
|
parts -= part
|
||||||
return
|
return
|
||||||
|
|
||||||
/obj/effect/decal/mecha_wreckage/hoverpod
|
/obj/effect/decal/mecha_wreckage/hoverpod
|
||||||
name = "Hover pod wreckage"
|
name = "Hover pod wreckage"
|
||||||
icon_state = "engineering_pod-broken"
|
icon_state = "engineering_pod-broken"
|
||||||
|
|
||||||
|
/obj/effect/decal/mecha_wreckage/tank
|
||||||
|
name = "adhomian light tank wreckage"
|
||||||
|
desc = "Remains of some unfortunate armored vehicle. Completely unrepairable."
|
||||||
|
icon = 'icons/mecha/mecha_large.dmi'
|
||||||
|
icon_state = "tank-broken"
|
||||||
|
anchored = TRUE
|
||||||
|
pixel_x = -16
|
||||||
|
layer = ABOVE_MOB_LAYER
|
||||||
@@ -13,28 +13,28 @@
|
|||||||
step_energy_drain = 6
|
step_energy_drain = 6
|
||||||
var/obj/item/clothing/glasses/hud/health/mech/hud
|
var/obj/item/clothing/glasses/hud/health/mech/hud
|
||||||
|
|
||||||
New()
|
/obj/mecha/medical/odysseus/Initialize()
|
||||||
..()
|
.= ..()
|
||||||
hud = new /obj/item/clothing/glasses/hud/health/mech(src)
|
hud = new /obj/item/clothing/glasses/hud/health/mech(src)
|
||||||
return
|
return
|
||||||
|
|
||||||
moved_inside(var/mob/living/carbon/human/H as mob)
|
/obj/mecha/medical/odysseus/moved_inside(var/mob/living/carbon/human/H as mob)
|
||||||
if(..())
|
if(..())
|
||||||
if(H.glasses)
|
if(H.glasses)
|
||||||
occupant_message("<font color='red'>[H.glasses] prevent you from using [src] [hud]</font>")
|
occupant_message("<font color='red'>[H.glasses] prevent you from using [src] [hud]</font>")
|
||||||
else
|
|
||||||
H.glasses = hud
|
|
||||||
return 1
|
|
||||||
else
|
else
|
||||||
return 0
|
H.glasses = hud
|
||||||
|
return 1
|
||||||
|
else
|
||||||
|
return 0
|
||||||
|
|
||||||
go_out()
|
/obj/mecha/medical/odysseus/go_out()
|
||||||
if(ishuman(occupant))
|
if(ishuman(occupant))
|
||||||
var/mob/living/carbon/human/H = occupant
|
var/mob/living/carbon/human/H = occupant
|
||||||
if(H.glasses == hud)
|
if(H.glasses == hud)
|
||||||
H.glasses = null
|
H.glasses = null
|
||||||
..()
|
..()
|
||||||
return
|
return
|
||||||
/*
|
/*
|
||||||
verb/set_perspective()
|
verb/set_perspective()
|
||||||
set name = "Set client perspective."
|
set name = "Set client perspective."
|
||||||
@@ -120,8 +120,8 @@
|
|||||||
|
|
||||||
C.images += holder
|
C.images += holder
|
||||||
|
|
||||||
/obj/mecha/medical/odysseus/loaded/New()
|
/obj/mecha/medical/odysseus/loaded/Initialize()
|
||||||
..()
|
.= ..()
|
||||||
var/obj/item/mecha_parts/mecha_equipment/ME = new /obj/item/mecha_parts/mecha_equipment/tool/sleeper
|
var/obj/item/mecha_parts/mecha_equipment/ME = new /obj/item/mecha_parts/mecha_equipment/tool/sleeper
|
||||||
ME.attach(src)
|
ME.attach(src)
|
||||||
ME = new /obj/item/mecha_parts/mecha_equipment/tool/sleeper
|
ME = new /obj/item/mecha_parts/mecha_equipment/tool/sleeper
|
||||||
|
|||||||
@@ -16,7 +16,7 @@
|
|||||||
var/stabilization_enabled = 1
|
var/stabilization_enabled = 1
|
||||||
|
|
||||||
/obj/mecha/working/hoverpod/Initialize()
|
/obj/mecha/working/hoverpod/Initialize()
|
||||||
. = ..()
|
.= ..()
|
||||||
ion_trail = new(src)
|
ion_trail = new(src)
|
||||||
|
|
||||||
//Modified phazon code
|
//Modified phazon code
|
||||||
@@ -81,8 +81,8 @@
|
|||||||
cargo_capacity = 2
|
cargo_capacity = 2
|
||||||
max_equip = 2
|
max_equip = 2
|
||||||
|
|
||||||
/obj/mecha/working/hoverpod/combatpod/New()
|
/obj/mecha/working/hoverpod/combatpod/Initialize()
|
||||||
..()
|
.= ..()
|
||||||
var/obj/item/mecha_parts/mecha_equipment/ME = new /obj/item/mecha_parts/mecha_equipment/weapon/energy/laser
|
var/obj/item/mecha_parts/mecha_equipment/ME = new /obj/item/mecha_parts/mecha_equipment/weapon/energy/laser
|
||||||
ME.attach(src)
|
ME.attach(src)
|
||||||
ME = new /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/explosive
|
ME = new /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/explosive
|
||||||
@@ -92,8 +92,8 @@
|
|||||||
/obj/mecha/working/hoverpod/shuttlepod
|
/obj/mecha/working/hoverpod/shuttlepod
|
||||||
desc = "Who knew a tiny ball could fit three people?"
|
desc = "Who knew a tiny ball could fit three people?"
|
||||||
|
|
||||||
/obj/mecha/working/hoverpod/shuttlepod/New()
|
/obj/mecha/working/hoverpod/shuttlepod/Initialize()
|
||||||
..()
|
.= ..()
|
||||||
var/obj/item/mecha_parts/mecha_equipment/ME = new /obj/item/mecha_parts/mecha_equipment/tool/passenger
|
var/obj/item/mecha_parts/mecha_equipment/ME = new /obj/item/mecha_parts/mecha_equipment/tool/passenger
|
||||||
ME.attach(src)
|
ME.attach(src)
|
||||||
ME = new /obj/item/mecha_parts/mecha_equipment/tool/passenger
|
ME = new /obj/item/mecha_parts/mecha_equipment/tool/passenger
|
||||||
|
|||||||
@@ -44,8 +44,8 @@
|
|||||||
wreckage = /obj/effect/decal/mecha_wreckage/ripley/deathripley
|
wreckage = /obj/effect/decal/mecha_wreckage/ripley/deathripley
|
||||||
step_energy_drain = 0
|
step_energy_drain = 0
|
||||||
|
|
||||||
/obj/mecha/working/ripley/deathripley/New()
|
/obj/mecha/working/ripley/deathripley/Initialize()
|
||||||
..()
|
.= ..()
|
||||||
var/obj/item/mecha_parts/mecha_equipment/ME = new /obj/item/mecha_parts/mecha_equipment/tool/safety_clamp
|
var/obj/item/mecha_parts/mecha_equipment/ME = new /obj/item/mecha_parts/mecha_equipment/tool/safety_clamp
|
||||||
ME.attach(src)
|
ME.attach(src)
|
||||||
return
|
return
|
||||||
@@ -54,8 +54,8 @@
|
|||||||
desc = "An old, dusty mining ripley."
|
desc = "An old, dusty mining ripley."
|
||||||
name = "APLU \"Miner\""
|
name = "APLU \"Miner\""
|
||||||
|
|
||||||
/obj/mecha/working/ripley/mining/New()
|
/obj/mecha/working/ripley/mining/Initialize()
|
||||||
..()
|
.= ..()
|
||||||
//Attach drill
|
//Attach drill
|
||||||
if(prob(25)) //Possible diamond drill... Feeling lucky?
|
if(prob(25)) //Possible diamond drill... Feeling lucky?
|
||||||
var/obj/item/mecha_parts/mecha_equipment/tool/drill/diamonddrill/D = new /obj/item/mecha_parts/mecha_equipment/tool/drill/diamonddrill
|
var/obj/item/mecha_parts/mecha_equipment/tool/drill/diamonddrill/D = new /obj/item/mecha_parts/mecha_equipment/tool/drill/diamonddrill
|
||||||
|
|||||||
@@ -24,7 +24,8 @@ STOCK_ITEM_LARGE(exosuit, 1.2)//A randomly generated exosuit in a very variable
|
|||||||
/obj/mecha/combat/marauder/seraph = 0.3,
|
/obj/mecha/combat/marauder/seraph = 0.3,
|
||||||
/obj/mecha/combat/marauder/mauler = 0.4,
|
/obj/mecha/combat/marauder/mauler = 0.4,
|
||||||
/obj/mecha/combat/phazon = 0.1,
|
/obj/mecha/combat/phazon = 0.1,
|
||||||
/obj/mecha/combat/honker = 0.01
|
/obj/mecha/combat/honker = 0.01,
|
||||||
|
/obj/mecha/combat/tank = 0.01
|
||||||
)
|
)
|
||||||
var/type = pickweight(randsuits)
|
var/type = pickweight(randsuits)
|
||||||
var/obj/mecha/exosuit = new type(get_turf(L))
|
var/obj/mecha/exosuit = new type(get_turf(L))
|
||||||
|
|||||||
@@ -193,6 +193,20 @@
|
|||||||
species_restricted = list("Unathi")
|
species_restricted = list("Unathi")
|
||||||
armor = list(melee = 65, bullet = 30, laser = 50, energy = 10, bomb = 25, bio = 0, rad = 0)
|
armor = list(melee = 65, bullet = 30, laser = 50, energy = 10, bomb = 25, bio = 0, rad = 0)
|
||||||
|
|
||||||
|
/obj/item/clothing/head/helmet/tank
|
||||||
|
name = "padded cap"
|
||||||
|
desc = "A padded skullcup for those prone to bumping their heads against hard surfaces."
|
||||||
|
icon_state = "tank"
|
||||||
|
flags_inv = BLOCKHEADHAIR
|
||||||
|
color = "#5f5f5f"
|
||||||
|
armor = list(melee = 25, bullet = 5, laser = 5, energy = 10, bomb = 5, bio = 0, rad = 0)
|
||||||
|
|
||||||
|
/obj/item/clothing/head/helmet/tank/olive
|
||||||
|
color = "#727c58"
|
||||||
|
|
||||||
|
/obj/item/clothing/head/helmet/tank/tan
|
||||||
|
color = "#ae9f79"
|
||||||
|
|
||||||
//Non-hardsuit ERT helmets.
|
//Non-hardsuit ERT helmets.
|
||||||
/obj/item/clothing/head/helmet/ert
|
/obj/item/clothing/head/helmet/ert
|
||||||
name = "emergency response team helmet"
|
name = "emergency response team helmet"
|
||||||
|
|||||||
@@ -312,6 +312,7 @@
|
|||||||
// called when something steps onto a human
|
// called when something steps onto a human
|
||||||
// this handles mulebots and vehicles
|
// this handles mulebots and vehicles
|
||||||
/mob/living/carbon/human/Crossed(var/atom/movable/AM)
|
/mob/living/carbon/human/Crossed(var/atom/movable/AM)
|
||||||
|
..()
|
||||||
if(istype(AM, /obj/machinery/bot/mulebot))
|
if(istype(AM, /obj/machinery/bot/mulebot))
|
||||||
var/obj/machinery/bot/mulebot/MB = AM
|
var/obj/machinery/bot/mulebot/MB = AM
|
||||||
MB.RunOver(src)
|
MB.RunOver(src)
|
||||||
|
|||||||
@@ -20,6 +20,11 @@
|
|||||||
src.visible_message("<b>[src]</b> points to [A]")
|
src.visible_message("<b>[src]</b> points to [A]")
|
||||||
return 1
|
return 1
|
||||||
|
|
||||||
|
/mob/living/Crossed(var/atom/movable/AM)
|
||||||
|
if(istype(AM, /obj/mecha))
|
||||||
|
var/obj/mecha/MB = AM
|
||||||
|
MB.trample(src)
|
||||||
|
|
||||||
/*one proc, four uses
|
/*one proc, four uses
|
||||||
swapping: if it's 1, the mobs are trying to switch, if 0, non-passive is pushing passive
|
swapping: if it's 1, the mobs are trying to switch, if 0, non-passive is pushing passive
|
||||||
default behaviour is:
|
default behaviour is:
|
||||||
|
|||||||
@@ -188,7 +188,7 @@
|
|||||||
penetrating = 1
|
penetrating = 1
|
||||||
|
|
||||||
/obj/item/projectile/bullet/cannon/on_impact(var/atom/A)
|
/obj/item/projectile/bullet/cannon/on_impact(var/atom/A)
|
||||||
explosion(A, 2, 3, 4, 4)
|
explosion(A, 1, 2, 3, 3)
|
||||||
..()
|
..()
|
||||||
|
|
||||||
//magic
|
//magic
|
||||||
|
|||||||
7
html/changelogs/albery-tankgodness.yml
Normal file
7
html/changelogs/albery-tankgodness.yml
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
author: Alberyk, Kyres1
|
||||||
|
|
||||||
|
delete-after: True
|
||||||
|
|
||||||
|
changes:
|
||||||
|
- rscadd: "Added the Ha'rron MK.IV light tank."
|
||||||
|
- soundadd: "Added some sounds to certain mecha actions."
|
||||||
BIN
icons/mecha/mecha_large.dmi
Normal file
BIN
icons/mecha/mecha_large.dmi
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 66 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 147 KiB After Width: | Height: | Size: 148 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 75 KiB After Width: | Height: | Size: 75 KiB |
BIN
sound/mecha/hatch-door-close.ogg
Normal file
BIN
sound/mecha/hatch-door-close.ogg
Normal file
Binary file not shown.
BIN
sound/mecha/tanktread.ogg
Normal file
BIN
sound/mecha/tanktread.ogg
Normal file
Binary file not shown.
Reference in New Issue
Block a user