Adds the disabled mech tools. (#4445)

* Adds the disabled mech tools.
This commit is contained in:
Belsima
2017-12-29 21:44:04 -08:00
committed by Atermonera
parent 3eb479b85f
commit ff35fe9f56
5 changed files with 164 additions and 155 deletions
+101 -5
View File
@@ -57,6 +57,7 @@
M.adjustOxyLoss(round(dam_force/2))
M.updatehealth()
occupant_message("<span class='warning'>You squeeze [target] with [src.name]. Something cracks.</span>")
playsound(src.loc, "fracture", 5, 1, -2) //CRACK
chassis.visible_message("<span class='warning'>[chassis] squeezes [target].</span>")
else
step_away(M,chassis)
@@ -408,7 +409,7 @@
/obj/item/mecha_parts/mecha_equipment/gravcatapult
name = "gravitational catapult"
desc = "An exosuit mounted Gravitational Catapult."
desc = "An exosuit mounted gravitational catapult."
icon_state = "mecha_teleport"
origin_tech = list(TECH_BLUESPACE = 2, TECH_MAGNET = 3)
equip_cooldown = 10
@@ -1041,7 +1042,7 @@
/obj/item/mecha_parts/mecha_equipment/tool/passenger
name = "passenger compartment"
desc = "A mountable passenger compartment for exo-suits. Rather cramped."
desc = "A mountable passenger compartment for exosuits. Rather cramped."
icon_state = "mecha_abooster_ccw"
origin_tech = list(TECH_ENGINEERING = 1, TECH_BIO = 1)
energy_drain = 10
@@ -1071,9 +1072,9 @@
log_message("[user] boarded.")
occupant_message("[user] boarded.")
else if(src.occupant != user)
user << "<span class='warning'>[src.occupant] was faster. Try better next time, loser.</span>"
to_chat(user, "<span class='warning'>[src.occupant] was faster. Try harder next time, loser.</span>")
else
user << "You stop entering the exosuit."
to_chat(user, "You stop entering the exosuit.")
/obj/item/mecha_parts/mecha_equipment/tool/passenger/verb/eject()
set name = "Eject"
@@ -1083,7 +1084,7 @@
if(usr != occupant)
return
occupant << "You climb out from \the [src]."
to_chat(occupant, "You climb out from \the [src].")
go_out()
occupant_message("[occupant] disembarked.")
log_message("[occupant] disembarked.")
@@ -1186,3 +1187,98 @@
#undef LOCKED
#undef OCCUPIED
/obj/item/mecha_parts/mecha_equipment/tool/jetpack
name = "ion jetpack"
desc = "Using directed ion bursts and cunning solar wind reflection technique, this device enables controlled space flight."
icon_state = "mecha_jetpack"
equip_cooldown = 5
energy_drain = 50
var/wait = 0
var/datum/effect/effect/system/ion_trail_follow/ion_trail
/obj/item/mecha_parts/mecha_equipment/tool/jetpack/can_attach(obj/mecha/M as obj)
if(!(locate(src.type) in M.equipment) && !M.proc_res["dyndomove"])
return ..()
/obj/item/mecha_parts/mecha_equipment/tool/jetpack/detach()
..()
chassis.proc_res["dyndomove"] = null
return
/obj/item/mecha_parts/mecha_equipment/tool/jetpack/attach(obj/mecha/M as obj)
..()
if(!ion_trail)
ion_trail = new
ion_trail.set_up(chassis)
return
/obj/item/mecha_parts/mecha_equipment/tool/jetpack/proc/toggle()
if(!chassis)
return
!equip_ready? turn_off() : turn_on()
return equip_ready
/obj/item/mecha_parts/mecha_equipment/tool/jetpack/proc/turn_on()
set_ready_state(0)
chassis.proc_res["dyndomove"] = src
ion_trail.start()
occupant_message("Activated")
log_message("Activated")
/obj/item/mecha_parts/mecha_equipment/tool/jetpack/proc/turn_off()
set_ready_state(1)
chassis.proc_res["dyndomove"] = null
ion_trail.stop()
occupant_message("Deactivated")
log_message("Deactivated")
/obj/item/mecha_parts/mecha_equipment/tool/jetpack/proc/dyndomove(direction)
if(!action_checks())
return chassis.dyndomove(direction)
var/move_result = 0
if(chassis.hasInternalDamage(MECHA_INT_CONTROL_LOST))
move_result = step_rand(chassis)
else if(chassis.dir!=direction)
chassis.set_dir(direction)
move_result = 1
else
move_result = step(chassis,direction)
if(chassis.occupant)
for(var/obj/effect/speech_bubble/B in range(1, chassis))
if(B.parent == chassis.occupant)
B.loc = chassis.loc
if(move_result)
wait = 1
chassis.use_power(energy_drain)
if(!chassis.pr_inertial_movement.active())
chassis.pr_inertial_movement.start(list(chassis,direction))
else
chassis.pr_inertial_movement.set_process_args(list(chassis,direction))
do_after_cooldown()
return 1
return 0
/obj/item/mecha_parts/mecha_equipment/tool/jetpack/action_checks()
if(equip_ready || wait)
return 0
if(energy_drain && !chassis.has_charge(energy_drain))
return 0
if(chassis.check_for_support())
return 0
return 1
/obj/item/mecha_parts/mecha_equipment/tool/jetpack/get_equip_info()
if(!chassis) return
return "<span style=\"color:[equip_ready?"#0f0":"#f00"];\">*</span>&nbsp;[src.name] \[<a href=\"?src=\ref[src];toggle=1\">Toggle</a>\]"
/obj/item/mecha_parts/mecha_equipment/tool/jetpack/Topic(href,href_list)
..()
if(href_list["toggle"])
toggle()
/obj/item/mecha_parts/mecha_equipment/tool/jetpack/do_after_cooldown()
sleep(equip_cooldown)
wait = 0
return 1
@@ -6,134 +6,6 @@
//NEEDS SPRITE! (When this gets ticked in search for 'TODO MECHA JETPACK SPRITE MISSING' through code to uncomment the place where it's missing.)
/obj/item/mecha_parts/mecha_equipment/jetpack
name = "jetpack"
desc = "Using directed ion bursts and cunning solar wind reflection technique, this device enables controlled space flight."
icon_state = "mecha_equip"
equip_cooldown = 5
energy_drain = 50
var/wait = 0
var/datum/effect/effect/system/ion_trail_follow/ion_trail
can_attach(obj/mecha/M as obj)
if(!(locate(src.type) in M.equipment) && !M.proc_res["dyndomove"])
return ..()
detach()
..()
chassis.proc_res["dyndomove"] = null
return
attach(obj/mecha/M as obj)
..()
if(!ion_trail)
ion_trail = new
ion_trail.set_up(chassis)
return
proc/toggle()
if(!chassis)
return
!equip_ready? turn_off() : turn_on()
return equip_ready
proc/turn_on()
set_ready_state(0)
chassis.proc_res["dyndomove"] = src
ion_trail.start()
occupant_message("Activated")
log_message("Activated")
proc/turn_off()
set_ready_state(1)
chassis.proc_res["dyndomove"] = null
ion_trail.stop()
occupant_message("Deactivated")
log_message("Deactivated")
proc/dyndomove(direction)
if(!action_checks())
return chassis.dyndomove(direction)
var/move_result = 0
if(chassis.hasInternalDamage(MECHA_INT_CONTROL_LOST))
move_result = step_rand(chassis)
else if(chassis.dir!=direction)
chassis.set_dir(direction)
move_result = 1
else
move_result = step(chassis,direction)
if(chassis.occupant)
for(var/obj/effect/speech_bubble/B in range(1, chassis))
if(B.parent == chassis.occupant)
B.loc = chassis.loc
if(move_result)
wait = 1
chassis.use_power(energy_drain)
if(!chassis.pr_inertial_movement.active())
chassis.pr_inertial_movement.start(list(chassis,direction))
else
chassis.pr_inertial_movement.set_process_args(list(chassis,direction))
do_after_cooldown()
return 1
return 0
action_checks()
if(equip_ready || wait)
return 0
if(energy_drain && !chassis.has_charge(energy_drain))
return 0
if(chassis.check_for_support())
return 0
return 1
get_equip_info()
if(!chassis) return
return "<span style=\"color:[equip_ready?"#0f0":"#f00"];\">*</span>&nbsp;[src.name] \[<a href=\"?src=\ref[src];toggle=1\">Toggle</a>\]"
Topic(href,href_list)
..()
if(href_list["toggle"])
toggle()
do_after_cooldown()
sleep(equip_cooldown)
wait = 0
return 1
/obj/item/mecha_parts/mecha_equipment/defence_shocker
name = "exosuit defence shocker"
desc = ""
icon_state = "mecha_teleport"
equip_cooldown = 10
energy_drain = 100
range = RANGED
var/shock_damage = 15
var/active
can_attach(obj/mecha/M as obj)
if(..())
if(!istype(M, /obj/mecha/combat/honker))
if(!M.proc_res["dynattackby"] && !M.proc_res["dynattackhand"] && !M.proc_res["dynattackalien"])
return 1
return 0
attach(obj/mecha/M as obj)
..()
chassis.proc_res["dynattackby"] = src
return
proc/dynattackby(obj/item/weapon/W as obj, mob/user as mob)
if(!action_checks(user) || !active)
return
user.electrocute_act(shock_damage, src)
return chassis.dynattackby(W,user)
/*
/obj/item/mecha_parts/mecha_equipment/book_stocker
+48 -21
View File
@@ -117,20 +117,18 @@
projectile = /obj/item/projectile/beam/stun
fire_sound = 'sound/weapons/Taser.ogg'
/* Commenting this out rather than removing it because it may be useful for reference.
/*
/obj/item/mecha_parts/mecha_equipment/weapon/honker
name = "\improper HoNkER BlAsT 5000"
name = "sound emission device"
icon_state = "mecha_honker"
energy_drain = 200
energy_drain = 300
equip_cooldown = 150
range = MELEE|RANGED
construction_time = 500
construction_cost = list("metal"=20000,"bananium"=10000)
origin_tech = list(TECH_MATERIAL = 2, TECH_COMBAT = 4, TECH_ILLEGAL = 1)
can_attach(obj/mecha/combat/honker/M as obj)
if(!istype(M))
return 0
return ..()
var/ear_safety = 0
if(iscarbon(M))
ear_safety = M.get_ear_protection()
action(target)
if(!chassis)
@@ -140,25 +138,22 @@
if(!equip_ready)
return 0
playsound(chassis, 'sound/items/AirHorn.ogg', 100, 1)
chassis.occupant_message("<font color='red' size='5'>HONK</font>")
playsound(chassis, 'sound/effects/bang.ogg', 30, 1, 30)
chassis.occupant_message("<span class='warning'>You emit a high-pitched noise from the mech.</span>")
for(var/mob/living/carbon/M in ohearers(6, chassis))
if(istype(M, /mob/living/carbon/human))
var/mob/living/carbon/human/H = M
if(istype(H.l_ear, /obj/item/clothing/ears/earmuffs) || istype(H.r_ear, /obj/item/clothing/ears/earmuffs))
continue
M << "<font color='red' size='7'>HONK</font>"
if(ear_safety > 0)
return
to_chat(M, "<span class='warning'>\Your ears feel like they're bleeding!</span>")
playsound(M, 'sound/effects/bang.ogg', 70, 1, 30)
M.sleeping = 0
M.stuttering += 20
M.ear_deaf += 30
M.ear_damage += rand(5, 20)
M.Weaken(3)
if(prob(30))
M.Stun(10)
M.Paralyse(4)
else
M.make_jittery(500)
M.Stun(5)
chassis.use_power(energy_drain)
log_message("Honked from [src.name]. HONK!")
log_message("Used a sound emission device.")
do_after_cooldown()
return
*/
@@ -335,3 +330,35 @@
projectile = /obj/item/projectile/bullet/incendiary/flamethrower
origin_tech = list(TECH_MATERIAL = 3, TECH_COMBAT = 3, TECH_PHORON = 3, TECH_ILLEGAL = 2)
//////////////
//Defensive//
//////////////
/obj/item/mecha_parts/mecha_equipment/shocker
name = "exosuit electrifier"
desc = "A device to electrify the external portions of a mecha in order to increase its defensive capabilities."
icon_state = "mecha_coil"
equip_cooldown = 10
energy_drain = 100
range = RANGED
origin_tech = list(TECH_COMBAT = 3, TECH_POWER = 6)
var/shock_damage = 15
var/active
/obj/item/mecha_parts/mecha_equipment/shocker/can_attach(obj/mecha/M as obj)
if(..())
if(!M.proc_res["dynattackby"] && !M.proc_res["dynattackhand"] && !M.proc_res["dynattackalien"])
return 1
return 0
/obj/item/mecha_parts/mecha_equipment/shocker/attach(obj/mecha/M as obj)
..()
chassis.proc_res["dynattackby"] = src
return
/obj/item/mecha_parts/mecha_equipment/shocker/proc/dynattackby(obj/item/weapon/W, mob/living/user)
if(!action_checks(user) || !active)
return
user.electrocute_act(shock_damage, src)
return chassis.dynattackby(W,user)
+15 -1
View File
@@ -290,6 +290,14 @@
id = "mech_taser"
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/taser
/datum/design/item/mecha/shocker
name = "Exosuit Electrifier"
desc = "A device to electrify the external portions of a mecha in order to increase its defensive capabilities."
id = "mech_shocker"
req_tech = list(TECH_COMBAT = 3, TECH_POWER = 6, TECH_MAGNET = 1)
build_path = /obj/item/mecha_parts/mecha_equipment/shocker
materials = list(DEFAULT_WALL_MATERIAL = 3500, "gold" = 750, "glass" = 1000)
/datum/design/item/mecha/lmg
name = "Ultra AC 2"
id = "mech_lmg"
@@ -407,7 +415,13 @@
materials = list(DEFAULT_WALL_MATERIAL = 7500, "gold" = 750, "silver" = 1500, "glass" = 3750)
build_path = /obj/item/mecha_parts/mecha_equipment/repair_droid
//obj/item/mecha_parts/mecha_equipment/jetpack, //TODO MECHA JETPACK SPRITE MISSING
/datum/design/item/mecha/jetpack
name = "Ion Jetpack"
desc = "Using directed ion bursts and cunning solar wind reflection technique, this device enables controlled space flight."
id = "mech_jetpack"
req_tech = list(TECH_ENGINEERING = 3, TECH_MAGNET = 4) //One less magnet than the actual got-damn teleporter.
build_path = /obj/item/mecha_parts/mecha_equipment/tool/jetpack
materials = list(DEFAULT_WALL_MATERIAL = 7500, "silver" = 300, "glass" = 600)
/datum/design/item/mecha/phoron_generator
desc = "Phoron Reactor"
Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 24 KiB