diff --git a/baystation12.dme b/baystation12.dme index df7506065b..0a94591d2a 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -433,9 +433,9 @@ #include "code\game\mecha\equipment\tools\medical_tools.dm" #include "code\game\mecha\equipment\tools\tools.dm" #include "code\game\mecha\equipment\weapons\weapons.dm" +#include "code\game\mecha\hoverpod\hoverpod.dm" #include "code\game\mecha\medical\medical.dm" #include "code\game\mecha\medical\odysseus.dm" -#include "code\game\mecha\working\hoverpod.dm" #include "code\game\mecha\working\ripley.dm" #include "code\game\mecha\working\working.dm" #include "code\game\objects\empulse.dm" diff --git a/code/game/mecha/equipment/mecha_equipment.dm b/code/game/mecha/equipment/mecha_equipment.dm index 7e19e787a9..2a6e2b6214 100644 --- a/code/game/mecha/equipment/mecha_equipment.dm +++ b/code/game/mecha/equipment/mecha_equipment.dm @@ -95,6 +95,9 @@ return /obj/item/mecha_parts/mecha_equipment/proc/can_attach(obj/mecha/M as obj) + if(M.equipment.len >= M.max_equip) + return 0 + if (ispath(required_type)) return istype(M, required_type) diff --git a/code/game/mecha/equipment/tools/tools.dm b/code/game/mecha/equipment/tools/tools.dm index 2adf280a6b..42f5debc62 100644 --- a/code/game/mecha/equipment/tools/tools.dm +++ b/code/game/mecha/equipment/tools/tools.dm @@ -5,7 +5,7 @@ energy_drain = 10 var/dam_force = 20 var/obj/mecha/working/ripley/cargo_holder - required_type = /obj/mecha/working + required_type = list(/obj/mecha/working, /obj/mecha/hoverpod) //so that hoverpods are a bit more useful as space transportation attach(obj/mecha/M as obj) ..() @@ -1163,6 +1163,10 @@ if (!usr.Adjacent(src)) return + if (!isturf(usr.loc)) + usr << "\red You can't reach the passenger compartment from here." + return + if(iscarbon(usr)) var/mob/living/carbon/C = usr if(C.handcuffed) diff --git a/code/game/mecha/working/hoverpod.dm b/code/game/mecha/hoverpod/hoverpod.dm similarity index 58% rename from code/game/mecha/working/hoverpod.dm rename to code/game/mecha/hoverpod/hoverpod.dm index 38b2815ca2..e44feccca6 100644 --- a/code/game/mecha/working/hoverpod.dm +++ b/code/game/mecha/hoverpod/hoverpod.dm @@ -1,96 +1,69 @@ -/obj/mecha/working/hoverpod +/obj/mecha/hoverpod desc = "Stubby and round, this space-capable craft is an ancient favorite." name = "Hover Pod" icon_state = "engineering_pod" initial_icon = "engineering_pod" + internal_damage_threshold = 80 step_in = 4 - step_energy_drain = 5 + step_energy_drain = 10 max_temperature = 20000 health = 150 infra_luminosity = 6 wreckage = /obj/effect/decal/mecha_wreckage/hoverpod var/list/cargo = new var/cargo_capacity = 3 - max_equip = 3 + max_equip = 2 + var/datum/effect/effect/system/ion_trail_follow/ion_trail -//duplicate of parent proc, but without space drifting -/obj/mecha/working/hoverpod/dyndomove(direction) - if(!can_move) - return 0 - if(src.pr_inertial_movement.active()) - return 0 - if(!has_charge(step_energy_drain)) - return 0 - var/move_result = 0 - if(hasInternalDamage(MECHA_INT_CONTROL_LOST)) - move_result = mechsteprand() - else if(src.dir!=direction) - move_result = mechturn(direction) - else - move_result = mechstep(direction) - if(move_result) - can_move = 0 - use_power(step_energy_drain) - /*if(istype(src.loc, /turf/space)) - if(!src.check_for_support()) - src.pr_inertial_movement.start(list(src,direction)) - src.log_message("Movement control lost. Inertial movement started.")*/ - if(do_after(step_in)) - can_move = 1 +/obj/mecha/hoverpod/New() + ..() + var/turf/T = get_turf(src) + if(T.z != 2) + new /obj/item/mecha_parts/mecha_tracking(src) + + ion_trail = new /datum/effect/effect/system/ion_trail_follow() + ion_trail.set_up(src) + ion_trail.start() + +/obj/mecha/hoverpod/range_action(atom/target as obj|mob|turf) + return + +//No space drifting +/obj/mecha/hoverpod/check_for_support() + //does the hoverpod have enough charge left to stabilize itself? + if (has_charge(step_energy_drain)) + if (!ion_trail.on) + ion_trail.start() return 1 - return 0 + + ion_trail.stop() + return ..() //these three procs overriden to play different sounds -/obj/mecha/working/hoverpod/mechturn(direction) +/obj/mecha/hoverpod/mechturn(direction) dir = direction //playsound(src,'sound/machines/hiss.ogg',40,1) return 1 -/obj/mecha/working/hoverpod/mechstep(direction) +/obj/mecha/hoverpod/mechstep(direction) var/result = step(src,direction) if(result) playsound(src,'sound/machines/hiss.ogg',40,1) return result -/obj/mecha/working/hoverpod/mechsteprand() +/obj/mecha/hoverpod/mechsteprand() var/result = step_rand(src) if(result) playsound(src,'sound/machines/hiss.ogg',40,1) return result -/* -/obj/mecha/working/hoverpod/New() - ..() - return -*/ - -/obj/mecha/working/hoverpod/combatpod - desc = "An ancient, ghetto fighter." // Ideally would have a seperate icon. - name = "Combat Hoverpod" - -/obj/mecha/working/hoverpod/combatpod/New() - ..() - var/obj/item/mecha_parts/mecha_equipment/ME = new /obj/item/mecha_parts/mecha_equipment/weapon/energy/laser - ME.attach(src) - ME = new /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/explosive - ME.attach(src) - -/obj/mecha/working/hoverpod/shuttlepod - desc = "Who knew a tiny ball could fit three people?" -/obj/mecha/working/hoverpod/shuttlepod/New() - ..() - var/obj/item/mecha_parts/mecha_equipment/ME = new /obj/item/mecha_parts/mecha_equipment/tool/passenger - ME.attach(src) - ME = new /obj/item/mecha_parts/mecha_equipment/tool/passenger - ME.attach(src) - -/obj/mecha/working/hoverpod/Exit(atom/movable/O) +/obj/mecha/hoverpod/Exit(atom/movable/O) if(O in cargo) return 0 return ..() -/obj/mecha/working/hoverpod/Topic(href, href_list) +/obj/mecha/hoverpod/Topic(href, href_list) ..() if(href_list["drop_from_cargo"]) var/obj/O = locate(href_list["drop_from_cargo"]) @@ -105,7 +78,7 @@ return -/obj/mecha/working/hoverpod/get_stats_part() +/obj/mecha/hoverpod/get_stats_part() var/output = ..() output += "Cargo Compartment Contents:
" if(src.cargo.len) @@ -116,7 +89,7 @@ output += "
" return output -/obj/mecha/working/hoverpod/Del() +/obj/mecha/hoverpod/Del() for(var/mob/M in src) if(M==src.occupant) continue @@ -130,4 +103,32 @@ T.Entered(A) step_rand(A) ..() - return \ No newline at end of file + return + +//Hoverpod variants + +/* Commented out the combatpod as they can't reattach their equipment if it ever gets dropped, + * and making a special exception for them seems lame. +/obj/mecha/hoverpod/combatpod + desc = "An ancient, run-down combat spacecraft." // Ideally would have a seperate icon. + name = "Combat Hoverpod" + health = 200 + internal_damage_threshold = 35 + +/obj/mecha/hoverpod/combatpod/New() + ..() + var/obj/item/mecha_parts/mecha_equipment/ME = new /obj/item/mecha_parts/mecha_equipment/weapon/energy/laser + ME.attach(src) + ME = new /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/explosive + ME.attach(src) +*/ + +/obj/mecha/hoverpod/shuttlepod + desc = "Who knew a tiny ball could fit three people?" + +/obj/mecha/hoverpod/shuttlepod/New() + ..() + var/obj/item/mecha_parts/mecha_equipment/ME = new /obj/item/mecha_parts/mecha_equipment/tool/passenger + ME.attach(src) + ME = new /obj/item/mecha_parts/mecha_equipment/tool/passenger + ME.attach(src) \ No newline at end of file diff --git a/code/game/objects/structures/crates_lockers/largecrate.dm b/code/game/objects/structures/crates_lockers/largecrate.dm index 51c0ec2baa..2923ba2321 100644 --- a/code/game/objects/structures/crates_lockers/largecrate.dm +++ b/code/game/objects/structures/crates_lockers/largecrate.dm @@ -70,5 +70,5 @@ /obj/structure/largecrate/hoverpod/attackby(obj/item/weapon/W as obj, mob/user as mob) if(istype(W, /obj/item/weapon/crowbar)) - new /obj/mecha/working/hoverpod(loc) + new /obj/mecha/hoverpod(loc) ..() \ No newline at end of file diff --git a/code/modules/mining/satchel_ore_boxdm.dm b/code/modules/mining/satchel_ore_boxdm.dm index e27d1d52c3..7ac552081d 100644 --- a/code/modules/mining/satchel_ore_boxdm.dm +++ b/code/modules/mining/satchel_ore_boxdm.dm @@ -95,4 +95,12 @@ O.loc = src.loc usr << "\blue You empty the ore box" - return \ No newline at end of file + return + +/obj/structure/ore_box/ex_act(severity) + if(severity == 1.0 || (severity < 3.0 && prob(50))) + for (var/obj/item/weapon/ore/O in contents) + O.loc = src.loc + O.ex_act(severity++) + del(src) + return \ No newline at end of file diff --git a/code/modules/power/turbine.dm b/code/modules/power/turbine.dm index fd25e71df1..3a6f56f6d5 100644 --- a/code/modules/power/turbine.dm +++ b/code/modules/power/turbine.dm @@ -30,7 +30,7 @@ name = "Gas turbine control computer" desc = "A computer to remotely control a gas turbine" icon = 'icons/obj/computer.dmi' - icon_state = "airtunnel0e" + icon_state = "turbinecomp" circuit = /obj/item/weapon/circuitboard/turbine_control anchored = 1 density = 1 diff --git a/icons/obj/computer.dmi b/icons/obj/computer.dmi index 39a7f6e3b0..5abff96a4e 100644 Binary files a/icons/obj/computer.dmi and b/icons/obj/computer.dmi differ