From c754581c4648208ccebaf62175d3a650578227e8 Mon Sep 17 00:00:00 2001 From: panurgomatic Date: Wed, 8 Feb 2012 18:47:04 +0000 Subject: [PATCH] - Added Exosuit Jetpack - Added Exosuit Nuclear Reactor - Added Ripley construction steps sprites (courtesy of WJohnston) - Exosuit Sleeper can now inject occupant with reagents taken from Syringe Gun - Exosuit Cable Layer will now auto-dismantle floors - Exosuit Heavy Lazer cooldown increased, Scattershot now fires medium calibre ammo (less damage) - EMP now drains half of current exosuit cell charge, not half of maximum charge. - Exosuit wreckage can be pulled - Fixed several possible exosuit equipment runtimes - Moved all mecha-related icons to icons/mecha - Mecha equipment messages will show equipment icons in chat window - Fixed mecha creation reports being sent at wrong construction step - Played with changelog markup. For some reason javascript is extremely slow in byond browser, I'll look into it. git-svn-id: http://tgstation13.googlecode.com/svn/trunk@3057 316c924e-a436-60f5-8080-3fe189b3f50e --- code/datums/helper_datums/events.dm | 13 +- code/game/mecha/combat/combat.dm | 24 +- code/game/mecha/combat/gygax.dm | 10 +- code/game/mecha/combat/marauder.dm | 2 +- code/game/mecha/equipment/mecha_equipment.dm | 16 +- code/game/mecha/equipment/tools/tools.dm | 420 +++++++++++++------ code/game/mecha/equipment/weapons/weapons.dm | 54 ++- code/game/mecha/mech_fabricator.dm | 3 +- code/game/mecha/mecha.dm | 108 +++-- code/game/mecha/mecha_construction_paths.dm | 65 ++- code/game/mecha/mecha_wreckage.dm | 2 +- code/game/mecha/working/ripley.dm | 4 +- code/modules/mob/mob.dm | 34 +- code/modules/power/sd_DynamicAreaLighting.dm | 97 ++++- code/modules/research/designs.dm | 8 + html/bug-minus.png | Bin 0 -> 657 bytes html/burn-exclamation.png | Bin 0 -> 727 bytes html/changelog.css | 33 ++ html/changelog.html | 420 ++++++++++--------- html/changelog.js | 87 ++++ html/chevron-expand.png | Bin 0 -> 495 bytes html/chevron.png | Bin 0 -> 498 bytes html/cross-circle.png | Bin 0 -> 651 bytes html/hard-hat-exclamation.png | Bin 0 -> 678 bytes html/image-minus.png | Bin 0 -> 535 bytes html/image-plus.png | Bin 0 -> 580 bytes html/music-minus.png | Bin 0 -> 403 bytes html/music-plus.png | Bin 0 -> 462 bytes html/spell-check.png | Bin 0 -> 509 bytes html/tick-circle.png | Bin 0 -> 660 bytes html/wrench-screwdriver.png | Bin 0 -> 684 bytes icons/{misc => mecha}/mech_bay.dmi | Bin icons/mecha/mech_construct.dmi | Bin 0 -> 26606 bytes icons/{misc => mecha}/mech_fab.dmi | Bin icons/{mob => mecha}/mecha.dmi | Bin icons/{misc => mecha}/mecha_mouse.dmi | Bin icons/mecha/ripley_construct.dmi | Bin 0 -> 2296 bytes icons/misc/mech_construct.dmi | Bin 43545 -> 0 bytes tgstation.dme | 1 + 39 files changed, 967 insertions(+), 434 deletions(-) create mode 100644 html/bug-minus.png create mode 100644 html/burn-exclamation.png create mode 100644 html/changelog.css create mode 100644 html/changelog.js create mode 100644 html/chevron-expand.png create mode 100644 html/chevron.png create mode 100644 html/cross-circle.png create mode 100644 html/hard-hat-exclamation.png create mode 100644 html/image-minus.png create mode 100644 html/image-plus.png create mode 100644 html/music-minus.png create mode 100644 html/music-plus.png create mode 100644 html/spell-check.png create mode 100644 html/tick-circle.png create mode 100644 html/wrench-screwdriver.png rename icons/{misc => mecha}/mech_bay.dmi (100%) create mode 100644 icons/mecha/mech_construct.dmi rename icons/{misc => mecha}/mech_fab.dmi (100%) rename icons/{mob => mecha}/mecha.dmi (100%) rename icons/{misc => mecha}/mecha_mouse.dmi (100%) create mode 100644 icons/mecha/ripley_construct.dmi delete mode 100644 icons/misc/mech_construct.dmi diff --git a/code/datums/helper_datums/events.dm b/code/datums/helper_datums/events.dm index 8ae893b26b..10e2f92a23 100644 --- a/code/datums/helper_datums/events.dm +++ b/code/datums/helper_datums/events.dm @@ -10,13 +10,16 @@ ..() events = new - proc/addEventType(event_type) + proc/addEventType(event_type as text) if(!(event_type in events) || !islist(events[event_type])) events[event_type] = list() return 1 return - proc/addEvent(event_type,proc_holder,proc_name) + + // Arguments: event_type as text, proc_holder as datum, proc_name as text + // Returns: New event, null on error. + proc/addEvent(event_type as text, proc_holder, proc_name as text) if(!event_type || !proc_holder || !proc_name) return addEventType(event_type) @@ -25,6 +28,8 @@ event += E return E + // Arguments: event_type as text, any number of additional arguments to pass to event handler + // Returns: null proc/fireEvent() //world << "Events in [args[1]] called" var/list/event = listgetindex(events,args[1]) @@ -35,7 +40,9 @@ clearEvent(args[1],E) return - proc/clearEvent(event_type,datum/event/E) + // Arguments: event_type as text, E as /datum/event + // Returns: 1 if event cleared, null on error + proc/clearEvent(event_type as text, datum/event/E) if(!event_type || !E) return var/list/event = listgetindex(events,event_type) diff --git a/code/game/mecha/combat/combat.dm b/code/game/mecha/combat/combat.dm index ec8f93b30f..906b4a505d 100644 --- a/code/game/mecha/combat/combat.dm +++ b/code/game/mecha/combat/combat.dm @@ -11,26 +11,6 @@ damage_absorption = list("brute"=0.7,"fire"=1,"bullet"=0.7,"laser"=0.85,"energy"=1,"bomb"=0.8) var/am = "d3c2fbcadca903a41161ccc9df9cf948" -/* -/obj/mecha/combat/verb/switch_weapon() - set category = "Exosuit Interface" - set name = "Switch weapon" - set src in view(0) - if(usr!=src.occupant) - return - if(state || !cell || cell.charge<=0) return - - if(selected_weapon == weapon_1) - selected_weapon = weapon_2 - else if(selected_weapon == weapon_2) - selected_weapon = weapon_1 - - src.occupant << "You switch to [selected_weapon.name]" - for (var/mob/M in oviewers(src)) - M.show_message("[src.name] raises [selected_weapon.name]") - return -*/ - /* /obj/mecha/combat/range_action(target as obj|mob|turf) if(internal_damage&MECHA_INT_CONTROL_LOST) @@ -259,7 +239,7 @@ /obj/mecha/combat/moved_inside(var/mob/living/carbon/human/H as mob) if(..()) if(H.client) - H.client.mouse_pointer_icon = file("icons/misc/mecha_mouse.dmi") + H.client.mouse_pointer_icon = file("icons/mecha/mecha_mouse.dmi") return 1 else return 0 @@ -267,7 +247,7 @@ /obj/mecha/combat/mmi_moved_inside(var/obj/item/device/mmi/mmi_as_oc as obj,mob/user as mob) if(..()) if(occupant.client) - occupant.client.mouse_pointer_icon = file("icons/misc/mecha_mouse.dmi") + occupant.client.mouse_pointer_icon = file("icons/mecha/mecha_mouse.dmi") return 1 else return 0 diff --git a/code/game/mecha/combat/gygax.dm b/code/game/mecha/combat/gygax.dm index fa9e2a186d..6c522151d6 100644 --- a/code/game/mecha/combat/gygax.dm +++ b/code/game/mecha/combat/gygax.dm @@ -10,11 +10,13 @@ max_temperature = 3500 infra_luminosity = 6 var/overload = 0 + var/overload_coeff = 2 wreckage = /obj/effect/decal/mecha_wreckage/gygax internal_damage_threshold = 35 max_equip = 3 + /* /obj/mecha/combat/gygax/New() ..() @@ -35,24 +37,24 @@ if(overload) overload = 0 step_in = initial(step_in) + step_energy_drain = initial(step_energy_drain) src.occupant_message("You disable leg actuators overload.") else overload = 1 step_in = min(1, round(step_in/2)) + step_energy_drain = step_energy_drain*overload_coeff src.occupant_message("You enable leg actuators overload.") src.log_message("Toggled leg actuators overload.") return - - -/obj/mecha/combat/gygax/relaymove(mob/user,direction) +/obj/mecha/combat/gygax/dyndomove(direction) if(!..()) return if(overload) - use_power(step_energy_drain) health-- if(health < initial(health) - initial(health)/3) overload = 0 step_in = initial(step_in) + step_energy_drain = initial(step_energy_drain) src.occupant_message("Leg actuators damage threshold exceded. Disabling overload.") return diff --git a/code/game/mecha/combat/marauder.dm b/code/game/mecha/combat/marauder.dm index 80e5ca0448..defb8c2244 100644 --- a/code/game/mecha/combat/marauder.dm +++ b/code/game/mecha/combat/marauder.dm @@ -92,7 +92,7 @@ return 0 if(!thrusters && src.pr_inertial_movement.active()) return 0 - if(state || !get_charge()) + if(state || !has_charge(step_energy_drain)) return 0 var/tmp_step_in = step_in var/tmp_step_energy_drain = step_energy_drain diff --git a/code/game/mecha/equipment/mecha_equipment.dm b/code/game/mecha/equipment/mecha_equipment.dm index f3223ba934..bc313635e2 100644 --- a/code/game/mecha/equipment/mecha_equipment.dm +++ b/code/game/mecha/equipment/mecha_equipment.dm @@ -2,7 +2,7 @@ /obj/item/mecha_parts/mecha_equipment name = "mecha equipment" - icon = 'mech_construct.dmi' + icon = 'mecha_equipment.dmi' icon_state = "mecha_equip" force = 5 origin_tech = "materials=2" @@ -61,7 +61,7 @@ /obj/item/mecha_parts/mecha_equipment/proc/critfail() if(chassis) - chassis.log_message("Critical failure of component: [src]",1) + log_message("Critical failure",1) return /obj/item/mecha_parts/mecha_equipment/proc/get_equip_info() @@ -80,7 +80,7 @@ return 0 if(!chassis) return 0 - if(energy_drain && chassis.get_charge() < energy_drain) + if(energy_drain && !chassis.has_charge(energy_drain)) return 0 if(!equip_ready) return 0 @@ -107,8 +107,9 @@ src.update_chassis_page() return -/obj/item/mecha_parts/mecha_equipment/proc/detach() - if(src.Move(get_turf(chassis))) +/obj/item/mecha_parts/mecha_equipment/proc/detach(atom/moveto=null) + moveto = moveto || get_turf(chassis) + if(src.Move(moveto)) chassis.equipment -= src if(chassis.selected == src) chassis.selected = null @@ -135,3 +136,8 @@ if(chassis) chassis.occupant_message("\icon[src] [message]") return + +/obj/item/mecha_parts/mecha_equipment/proc/log_message(message) + if(chassis) + chassis.log_message("[src]: [message]") + return diff --git a/code/game/mecha/equipment/tools/tools.dm b/code/game/mecha/equipment/tools/tools.dm index 3a77bca8df..95b69169ed 100644 --- a/code/game/mecha/equipment/tools/tools.dm +++ b/code/game/mecha/equipment/tools/tools.dm @@ -24,7 +24,7 @@ var/obj/O = target if(!O.anchored) if(cargo_holder.cargo.len < cargo_holder.cargo_capacity) - chassis.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.") set_ready_state(0) chassis.use_power(energy_drain) @@ -35,15 +35,15 @@ cargo_holder.cargo += O O.loc = chassis O.anchored = 0 - chassis.occupant_message("[target] succesfully loaded.") - chassis.log_message("Loaded [O]. Cargo compartment capacity: [cargo_holder.cargo_capacity - cargo_holder.cargo.len]") + occupant_message("[target] succesfully loaded.") + log_message("Loaded [O]. Cargo compartment capacity: [cargo_holder.cargo_capacity - cargo_holder.cargo.len]") else - chassis.occupant_message("You must hold still while handling objects.") + occupant_message("You must hold still while handling objects.") O.anchored = initial(O.anchored) else - chassis.occupant_message("Not enough room in cargo compartment.") + occupant_message("Not enough room in cargo compartment.") else - chassis.occupant_message("[target] is firmly secured.") + occupant_message("[target] is firmly secured.") else if(istype(target,/mob/living)) var/mob/living/M = target @@ -52,11 +52,11 @@ M.take_overall_damage(dam_force) M.adjustOxyLoss(round(dam_force/2)) M.updatehealth() - chassis.occupant_message("\red You squeese [target] with [src.name]. Something cracks.") + occupant_message("\red You squeese [target] with [src.name]. Something cracks.") chassis.visible_message("\red [chassis] squeeses [target].") else step_away(M,chassis) - chassis.occupant_message("You push [target] out of the way.") + occupant_message("You push [target] out of the way.") chassis.visible_message("[chassis] pushes [target] out of the way.") set_ready_state(0) chassis.use_power(energy_drain) @@ -76,18 +76,18 @@ set_ready_state(0) chassis.use_power(energy_drain) chassis.visible_message("[chassis] starts to drill [target]", "You hear the drill.") - chassis.occupant_message("You start to drill [target]") + occupant_message("You start to drill [target]") var/T = chassis.loc var/C = target.loc //why are these backwards? we may never know -Pete if(do_after_cooldown(target)) if(T == chassis.loc && src == chassis.selected) if(istype(target, /turf/simulated/wall/r_wall)) - chassis.occupant_message("[target] is too durable to drill through.") + occupant_message("[target] is too durable to drill through.") else if(istype(target, /turf/simulated/mineral)) for(var/turf/simulated/mineral/M in range(chassis,1)) if(get_dir(chassis,M)&chassis.dir) M.gets_drilled() - chassis.log_message("Drilled through [target]") + log_message("Drilled through [target]") if(locate(/obj/item/mecha_parts/mecha_equipment/tool/hydraulic_clamp) in chassis.equipment) var/obj/structure/ore_box/ore_box = locate(/obj/structure/ore_box) in chassis:cargo if(ore_box) @@ -95,7 +95,7 @@ if(get_dir(chassis,ore)&chassis.dir) ore.Move(ore_box) else if(target.loc == C) - chassis.log_message("Drilled through [target]") + log_message("Drilled through [target]") target.ex_act(2) return 1 @@ -137,7 +137,7 @@ if(istype(target, /obj/structure/reagent_dispensers/watertank) && get_dist(chassis,target) <= 1) var/obj/o = target o.reagents.trans_to(src, 200) - chassis.occupant_message("\blue Extinguisher refilled") + occupant_message("\blue Extinguisher refilled") playsound(chassis, 'refill.ogg', 50, 1, -6) else if(src.reagents.total_volume > 0) @@ -208,7 +208,7 @@ switch(mode) if(0) if (istype(target, /turf/simulated/wall)) - chassis.occupant_message("Deconstructing [target]...") + occupant_message("Deconstructing [target]...") set_ready_state(0) if(do_after_cooldown(target)) if(disabled) return @@ -217,7 +217,7 @@ playsound(target, 'Deconstruct.ogg', 50, 1) chassis.give_power(energy_drain) else if (istype(target, /turf/simulated/floor)) - chassis.occupant_message("Deconstructing [target]...") + occupant_message("Deconstructing [target]...") set_ready_state(0) if(do_after_cooldown(target)) if(disabled) return @@ -226,7 +226,7 @@ playsound(target, 'Deconstruct.ogg', 50, 1) chassis.give_power(energy_drain) else if (istype(target, /obj/machinery/door/airlock)) - chassis.occupant_message("Deconstructing [target]...") + occupant_message("Deconstructing [target]...") set_ready_state(0) if(do_after_cooldown(target)) if(disabled) return @@ -236,7 +236,7 @@ chassis.give_power(energy_drain) if(1) if(istype(target, /turf/space)) - chassis.occupant_message("Building Floor...") + occupant_message("Building Floor...") set_ready_state(0) if(do_after_cooldown(target)) if(disabled) return @@ -245,7 +245,7 @@ chassis.spark_system.start() chassis.use_power(energy_drain*2) else if(istype(target, /turf/simulated/floor)) - chassis.occupant_message("Building Wall...") + occupant_message("Building Wall...") set_ready_state(0) if(do_after_cooldown(target)) if(disabled) return @@ -255,7 +255,7 @@ chassis.use_power(energy_drain*2) if(2) if(istype(target, /turf/simulated/floor)) - chassis.occupant_message("Building Airlock...") + occupant_message("Building Airlock...") set_ready_state(0) if(do_after_cooldown(target)) if(disabled) return @@ -274,11 +274,11 @@ mode = text2num(href_list["mode"]) switch(mode) if(0) - chassis.occupant_message("Switched RCD to Deconstruct.") + occupant_message("Switched RCD to Deconstruct.") if(1) - chassis.occupant_message("Switched RCD to Construct.") + occupant_message("Switched RCD to Construct.") if(2) - chassis.occupant_message("Switched RCD to Construct Airlock.") + occupant_message("Switched RCD to Construct Airlock.") return get_equip_info() @@ -374,10 +374,10 @@ if(!action_checks(target) && !locked) return if(!locked) if(!istype(target) || target.anchored) - chassis.occupant_message("Unable to lock on [target]") + occupant_message("Unable to lock on [target]") return locked = target - chassis.occupant_message("Locked on [target]") + occupant_message("Locked on [target]") send_byjax(chassis.occupant,"exosuit.browser","\ref[src]",src.get_equip_info()) return else if(target!=locked) @@ -390,7 +390,7 @@ do_after_cooldown() else locked = null - chassis.occupant_message("Lock on [locked] disengaged.") + occupant_message("Lock on [locked] disengaged.") send_byjax(chassis.occupant,"exosuit.browser","\ref[src]",src.get_equip_info()) if(2) if(!action_checks(target)) return @@ -592,10 +592,10 @@ chassis.overlays -= droid_overlay if(pr_repair_droid.toggle()) droid_overlay = new(src.icon, icon_state = "repair_droid_a") - chassis.log_message("[src] activated.") + log_message("Activated.") else droid_overlay = new(src.icon, icon_state = "repair_droid") - chassis.log_message("[src] deactivated.") + log_message("Deactivated.") set_ready_state(1) chassis.overlays += droid_overlay send_byjax(chassis.occupant,"exosuit.browser","\ref[src]",src.get_equip_info()) @@ -677,7 +677,7 @@ return chassis.dyngetcharge() var/area/A = get_area(chassis) var/pow_chan = get_power_channel(A) - var/charge + var/charge = 0 if(pow_chan) charge = 1000 //making magic return charge @@ -696,10 +696,10 @@ if(href_list["toggle_relay"]) if(pr_energy_relay.toggle()) set_ready_state(0) - chassis.log_message("[src] activated.") + log_message("Activated.") else set_ready_state(1) - chassis.log_message("[src] deactivated.") + log_message("Deactivated.") return get_equip_info() @@ -726,7 +726,7 @@ if(isnull(cur_charge)) stop() ER.set_ready_state(1) - ER.chassis.occupant_message("No powercell detected.") + ER.occupant_message("No powercell detected.") return if(cur_charge3\] - [pr_mech_plasma_generator.active()?"Dea":"A"]ctivate" + return "[output] \[[fuel]: [round(fuel.amount*fuel.perunit,0.1)] cm3\] - [pr_mech_generator.active()?"Dea":"A"]ctivate" return action(target) @@ -796,22 +802,22 @@ var/result = load_fuel(target) var/message if(isnull(result)) - message = "Plasma traces in target minimal. [target] cannot be used as fuel." + message = "[fuel] traces in target minimal. [target] cannot be used as fuel." else if(!result) message = "Unit is full." else - message = "[result] units of plasma successfully loaded." + message = "[result] unit\s of [fuel] successfully loaded." send_byjax(chassis.occupant,"exosuit.browser","\ref[src]",src.get_equip_info()) - chassis.occupant_message(message) + occupant_message(message) return - proc/load_fuel(var/obj/item/stack/sheet/plasma/P) - if(istype(P) && P.amount) - var/to_load = max(max_fuel - fuel,0) + proc/load_fuel(var/obj/item/stack/sheet/P) + if(P.type == fuel.type && P.amount) + var/to_load = max(max_fuel - fuel.amount*fuel.perunit,0) if(to_load) var/units = min(max(round(to_load / P.perunit),1),P.amount) if(units) - fuel += units * P.perunit + fuel.amount += units P.use(units) return units else @@ -821,11 +827,11 @@ attackby(weapon,mob/user) var/result = load_fuel(weapon) if(isnull(result)) - user.visible_message("[user] tries to shove [weapon] into [src]. What a dumb-ass.","Plasma traces minimal. [weapon] cannot be used as fuel.") + user.visible_message("[user] tries to shove [weapon] into [src]. What a dumb-ass.","[fuel] traces minimal. [weapon] cannot be used as fuel.") else if(!result) user << "Unit is full." else - user.visible_message("[user] loads [src] with plasma.","[result] units of plasma successfully loaded.") + user.visible_message("[user] loads [src] with [fuel].","[result] unit\s of [fuel] successfully loaded.") return critfail() @@ -846,35 +852,68 @@ T.assume_air(GM) return -/datum/global_iterator/mecha_plasma_generator +/datum/global_iterator/mecha_generator - process(var/obj/item/mecha_parts/mecha_equipment/plasma_generator/EG) + process(var/obj/item/mecha_parts/mecha_equipment/generator/EG) if(!EG.chassis) stop() EG.set_ready_state(1) - return - if(EG.fuel<=0) + return 0 + if(EG.fuel.amount<=0) stop() - EG.chassis.log_message("[src] deactivated.") + EG.log_message("Deactivated - no fuel.") EG.set_ready_state(1) - return + return 0 if(anyprob(EG.reliability)) EG.critfail() - return stop() + stop() + return 0 var/cur_charge = EG.chassis.get_charge() if(isnull(cur_charge)) EG.set_ready_state(1) - EG.chassis.occupant_message("No powercell detected.") - EG.chassis.log_message("[src] deactivated.") - return stop() + EG.occupant_message("No powercell detected.") + EG.log_message("Deactivated.") + stop() + return 0 var/use_fuel = EG.fuel_per_cycle_idle if(cur_chargeThe sleeper is already occupied!") + occupant_message("The sleeper is already occupied!") return target.forceMove(src) occupant = target @@ -947,17 +987,17 @@ */ set_ready_state(0) pr_mech_sleeper.start() - chassis.occupant_message("[target] successfully loaded into [src]. Life support functions engaged.") - chassis.visible_message("[chassis] loads [target] into the [src].") - chassis.log_message("[src]: [target] loaded. Life support functions engaged.") + occupant_message("[target] successfully loaded into [src]. Life support functions engaged.") + chassis.visible_message("[chassis] loads [target] into [src].") + log_message("[target] loaded. Life support functions engaged.") return proc/go_out() if(!occupant) return occupant.forceMove(get_turf(src)) - chassis.occupant_message("[occupant] ejected. Life support functions disabled.") - chassis.log_message("[src]: [occupant] ejected. Life support functions disabled.") + occupant_message("[occupant] ejected. Life support functions disabled.") + log_message("[occupant] ejected. Life support functions disabled.") occupant.reset_view() /* if(occupant.client) @@ -971,7 +1011,7 @@ detach() if(occupant) - chassis.occupant_message("Unable to detach [src] - equipment occupied.") + occupant_message("Unable to detach [src] - equipment occupied.") return pr_mech_sleeper.stop() return ..() @@ -995,7 +1035,7 @@ onclose(chassis.occupant, "msleeper") return if(filter.get("inject")) - inject_reagent(filter.get("inject"),filter.getNum("amount"), filter.get("rname")) + inject_reagent(filter.getType("inject",/datum/reagent),filter.getObj("source")) return proc/get_occupant_stats() @@ -1009,7 +1049,7 @@ @@ -1021,6 +1061,9 @@
[get_occupant_reagents()]
+
+ [get_available_reagents()] +
"} @@ -1050,30 +1093,45 @@ . += "[R]: [round(R.volume,0.01)]
" return . || "None" + proc/get_available_reagents() + var/output + var/obj/item/mecha_parts/mecha_equipment/tool/syringe_gun/SG = locate(/obj/item/mecha_parts/mecha_equipment/tool/syringe_gun) in chassis + if(SG && SG.reagents && islist(SG.reagents.reagent_list)) + for(var/datum/reagent/R in SG.reagents.reagent_list) + if(R.volume > 0) + output += "Inject [R.name]
" + return output - proc/inject_reagent(reagent, amount, reagent_name) - if(reagent && occupant) - if(occupant.reagents.get_reagent_amount(reagent) + amount <= amount*2) - occupant.reagents.add_reagent(reagent, amount) - chassis.occupant_message("Occupant injected with [amount] units of [reagent_name].") - chassis.log_message("[src]: Injected [occupant] with [amount] units of [reagent_name].") + + proc/inject_reagent(var/datum/reagent/R,var/obj/item/mecha_parts/mecha_equipment/tool/syringe_gun/SG) + if(!R || !occupant || !SG || !(SG in chassis.equipment)) + return 0 + var/to_inject = min(R.volume, inject_amount) + if(to_inject && occupant.reagents.get_reagent_amount(R.id) + to_inject <= inject_amount*2) + SG.reagents.trans_id_to(occupant,R.id,to_inject) + occupant_message("[occupant] injected with [to_inject] units of [R.name].") + log_message("[occupant] injected with [to_inject] units of [R.name].") + update_equip_info() return update_equip_info() if(..()) send_byjax(chassis.occupant,"msleeper.browser","lossinfo",get_occupant_dam()) send_byjax(chassis.occupant,"msleeper.browser","reagents",get_occupant_reagents()) + send_byjax(chassis.occupant,"msleeper.browser","injectwith",get_available_reagents()) return 1 return /datum/global_iterator/mech_sleeper process(var/obj/item/mecha_parts/mecha_equipment/tool/sleeper/S) - var/cur_charge = S.chassis.get_charge() - if(!cur_charge) + if(!S.chassis) S.set_ready_state(1) - S.chassis.log_message("[src] deactivated.") - S.chassis.occupant_message("[src] deactivated - no power.") + return stop() + if(!S.chassis.has_charge(S.energy_drain)) + S.set_ready_state(1) + S.log_message("Deactivated.") + S.occupant_message("[src] deactivated - no power.") return stop() var/mob/living/carbon/M = S.occupant if(!M) @@ -1092,17 +1150,6 @@ S.chassis.use_power(S.energy_drain) S.update_equip_info() return -/* -/obj/item/mecha_parts/mecha_equipment/tool/mecha_injector - name = "Reagent Injector" - desc = "Reagent Injector" - icon_state = "tesla" - origin_tech = "plasmatech=2;powerstorage=2;engineering" - equip_cooldown = 10 - energy_drain = 20 - range = MELEE - construction_cost = list("metal"=10000,"silver"=500,"glass"=1000) -*/ /obj/item/mecha_parts/mecha_equipment/tool/cable_layer @@ -1150,31 +1197,32 @@ else message = "[result] meters of cable successfully loaded." send_byjax(chassis.occupant,"exosuit.browser","\ref[src]",src.get_equip_info()) - chassis.occupant_message(message) + occupant_message(message) return Topic(href,href_list) ..() if(href_list["toggle"]) set_ready_state(!equip_ready) - chassis.occupant_message("[src] [equip_ready?"dea":"a"]ctivated.") - chassis.log_message("[src] [equip_ready?"dea":"a"]ctivated.") + occupant_message("[src] [equip_ready?"dea":"a"]ctivated.") + log_message("[equip_ready?"Dea":"A"]ctivated.") return if(href_list["cut"]) if(cable && cable.amount) var/m = round(input(chassis.occupant,"Please specify the length of cable to cut","Cut cable",min(cable.amount,30)) as num, 1) m = min(m, cable.amount) - use_cable(m) - var/obj/item/weapon/cable_coil/CC = new (get_turf(chassis)) - CC.amount = m + if(m) + use_cable(m) + var/obj/item/weapon/cable_coil/CC = new (get_turf(chassis)) + CC.amount = m else - chassis.occupant_message("There's no more cable on the reel.") + occupant_message("There's no more cable on the reel.") return get_equip_info() var/output = ..() if(output) - return "[output] \[Cable: [cable ? cable.amount : 0] m\] - [!equip_ready?"Dea":"A"]ctivate|Cut" + return "[output] \[Cable: [cable ? cable.amount : 0] m\][(cable && cable.amount) ? "- [!equip_ready?"Dea":"A"]ctivate|Cut" : null]" return proc/load_cable(var/obj/item/weapon/cable_coil/CC) @@ -1196,11 +1244,11 @@ proc/use_cable(amount) if(!cable || cable.amount<1) set_ready_state(1) - chassis.occupant_message("Cable depleted, [src] deactivated.") - chassis.log_message("Cable depleted, [src] deactivated.") + occupant_message("Cable depleted, [src] deactivated.") + log_message("Cable depleted, [src] deactivated.") return if(cable.amount < amount) - chassis.occupant_message("No enough cable to finish the task.") + occupant_message("No enough cable to finish the task.") return cable.use(amount) update_equip_info() @@ -1209,8 +1257,17 @@ proc/reset() last_piece = null + proc/dismantleFloor(var/turf/new_turf) + if(istype(new_turf, /turf/simulated/floor)) + var/turf/simulated/floor/T = new_turf + if(!T.is_plating()) + if(!T.broken && !T.burnt) + new T.floor_tile.type(T) + T.make_plating() + return !new_turf.intact + proc/layCable(var/turf/new_turf) - if(equip_ready || !istype(new_turf) || new_turf.intact) + if(equip_ready || !istype(new_turf) || !dismantleFloor(new_turf)) return reset() var/fdirn = turn(chassis.dir,180) for(var/obj/structure/cable/LC in new_turf) // check to make sure there's not a cable there already @@ -1302,10 +1359,10 @@ if(mode) return analyze_reagents(target) if(!syringes.len) - chassis.occupant_message("No syringes loaded.") + occupant_message("No syringes loaded.") return if(reagents.total_volume<=0) - chassis.occupant_message("No available reagents to load syringe with.") + occupant_message("No available reagents to load syringe with.") return set_ready_state(0) chassis.use_power(energy_drain) @@ -1317,6 +1374,7 @@ S.icon = 'chemical.dmi' S.icon_state = "syringeproj" playsound(chassis, 'syringeproj.ogg', 50, 1) + log_message("Launched [S] from [src], targeting [target].") spawn(-1) src = null //if src is deleted, still process the syringe for(var/i=0, i<6, i++) @@ -1331,7 +1389,7 @@ S.icon_state = initial(S.icon_state) S.icon = initial(S.icon) S.reagents.trans_to(M, S.reagents.total_volume) - M.take_organ_damage(5) + M.take_organ_damage(2) S.visible_message(" [M] was hit by the syringe!") break else if(S.loc == trg) @@ -1348,6 +1406,7 @@ do_after_cooldown() return 1 + Topic(href,href_list) ..() var/datum/topic_input/filter = new (href,href_list) @@ -1358,17 +1417,21 @@ if(filter.get("select_reagents")) processed_reagents.len = 0 var/m = 0 + var/message for(var/i=1 to known_reagents.len) - if(m>synth_speed) + if(m>=synth_speed) break var/reagent = filter.get("reagent_[i]") if(reagent && (reagent in known_reagents)) - chassis.occupant_message("[known_reagents[reagent]] added to production") + message = "[m ? ", " : null][known_reagents[reagent]]" processed_reagents += reagent m++ if(processed_reagents.len) + message += " added to production" synth.start() - chassis.occupant_message("Reagent processing started.") + occupant_message(message) + occupant_message("Reagent processing started.") + log_message("Reagent processing started.") return if(filter.get("show_reagents")) chassis.occupant << browse(get_reagents_page(),"window=msyringegun") @@ -1399,7 +1462,7 @@

Current reagents:

- [get_current_reagents() || "None"] + [get_current_reagents()]

Reagents production:

@@ -1439,29 +1502,29 @@ output += "[R]: [round(R.volume,0.001)] - Purge Reagent
" if(output) output += "Total: [round(reagents.total_volume,0.001)]/[reagents.maximum_volume] - Purge All" - return output + return output || "None" proc/load_syringe(obj/item/weapon/reagent_containers/syringe/S) if(syringes.lenNo reagent info gained from [A].") + occupant_message("No reagent info gained from [A].") return 0 - chassis.occupant_message("Analyzing reagents...") + occupant_message("Analyzing reagents...") for(var/datum/reagent/R in A.reagents.reagent_list) if(R.reagent_state == 2 && add_known_reagent(R.id,R.name)) - chassis.occupant_message("Reagent analyzed, identified as [R.name] and added to database.") + occupant_message("Reagent analyzed, identified as [R.name] and added to database.") send_byjax(chassis.occupant,"msyringegun.browser","reagents_form",get_reagents_form()) - chassis.occupant_message("Analyzis complete.") + occupant_message("Analyzis complete.") return 1 proc/add_known_reagent(r_id,r_name) @@ -1490,15 +1553,19 @@ delay = 100 process(var/obj/item/mecha_parts/mecha_equipment/tool/syringe_gun/S) - if(!S.processed_reagents.len || S.reagents.total_volume >= S.reagents.maximum_volume) - S.chassis.occupant_message("Reagent processing stopped.") + if(!S.chassis) + return stop() + var/energy_drain = S.energy_drain*10 + if(!S.processed_reagents.len || S.reagents.total_volume >= S.reagents.maximum_volume || !S.chassis.has_charge(energy_drain)) + S.occupant_message("Reagent processing stopped.") + S.log_message("Reagent processing stopped.") return stop() if(anyprob(S.reliability)) S.critfail() var/amount = S.synth_speed / S.processed_reagents.len for(var/reagent in S.processed_reagents) S.reagents.add_reagent(reagent,amount) - S.chassis.use_power(S.energy_drain*10) + S.chassis.use_power(energy_drain) return 1 @@ -1616,4 +1683,105 @@ set_ready_state(0) chassis.use_power(energy_drain) do_after_cooldown() - return 1 \ No newline at end of file + return 1 + + +/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.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(crit_fail) + return 0 + if(chassis.check_for_support()) + return 0 + return 1 + + get_equip_info() + if(!chassis) return + return "* [src.name] \[Toggle\]" + + + Topic(href,href_list) + ..() + if(href_list["toggle"]) + toggle() + + do_after_cooldown() + sleep(equip_cooldown) + wait = 0 + return 1 + + diff --git a/code/game/mecha/equipment/weapons/weapons.dm b/code/game/mecha/equipment/weapons/weapons.dm index 8a51b2d889..1072a07cf5 100644 --- a/code/game/mecha/equipment/weapons/weapons.dm +++ b/code/game/mecha/equipment/weapons/weapons.dm @@ -47,7 +47,7 @@ fire_sound = 'Laser.ogg' /obj/item/mecha_parts/mecha_equipment/weapon/energy/laser/heavy - equip_cooldown = 12 + equip_cooldown = 15 name = "CH-LC \"Solaris\" Laser Cannon" icon_state = "mecha_laser" energy_drain = 60 @@ -146,7 +146,7 @@ walk(thingy,0) */ chassis.use_power(energy_drain) - chassis.log_message("Honked from [src.name]. HONK!") + log_message("Honked from [src.name]. HONK!") do_after_cooldown() return @@ -172,7 +172,7 @@ projectiles_to_add-- chassis.use_power(projectile_energy_cost) send_byjax(chassis.occupant,"exosuit.browser","\ref[src]",src.get_equip_info()) - chassis.log_message("Rearmed [src.name].") + log_message("Rearmed [src.name].") return Topic(href, href_list) @@ -186,6 +186,8 @@ name = "LBX AC 10 \"Scattershot\"" icon_state = "mecha_scatter" equip_cooldown = 20 + projectile = /obj/item/projectile/bullet/midbullet + fire_sound = 'Gunshot.ogg' projectiles = 40 projectile_energy_cost = 25 var/projectiles_per_shot = 4 @@ -204,8 +206,8 @@ targloc = locate(target_x+GaussRandRound(deviation,1),target_y+GaussRandRound(deviation,1),target_z) if(!targloc || targloc == curloc) break - playsound(chassis, 'Gunshot.ogg', 80, 1) - var/obj/item/projectile/bullet/A = new /obj/item/projectile/bullet(curloc) + playsound(chassis, fire_sound, 80, 1) + var/obj/item/projectile/A = new projectile(curloc) src.projectiles-- A.original = targloc A.current = curloc @@ -213,7 +215,7 @@ A.xo = targloc.x - curloc.x set_ready_state(0) A.process() - chassis.log_message("Fired from [src.name], targeting [target].") + log_message("Fired from [src.name], targeting [target].") do_after_cooldown() return @@ -223,6 +225,8 @@ name = "Ultra AC 2" icon_state = "mecha_uac2" equip_cooldown = 10 + projectile = /obj/item/projectile/bullet/weakbullet + fire_sound = 'Gunshot.ogg' projectiles = 300 projectile_energy_cost = 20 var/projectiles_per_shot = 3 @@ -244,8 +248,8 @@ if (targloc == curloc) continue - playsound(chassis, 'Gunshot.ogg', 50, 1) - var/obj/item/projectile/bullet/weakbullet/A = new /obj/item/projectile/bullet/weakbullet(curloc) + playsound(chassis, fire_sound, 50, 1) + var/obj/item/projectile/A = new projectile(curloc) src.projectiles-- A.original = targloc A.current = curloc @@ -254,13 +258,15 @@ A.process() sleep(2) set_ready_state(0) - chassis.log_message("Fired from [src.name], targeting [target].") + log_message("Fired from [src.name], targeting [target].") do_after_cooldown() return /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack name = "SRM-8 Missile Rack" icon_state = "mecha_missilerack" + projectile = /obj/item/missile + fire_sound = 'bang.ogg' projectiles = 8 projectile_energy_cost = 1000 equip_cooldown = 60 @@ -270,12 +276,12 @@ action(target) if(!action_checks(target)) return set_ready_state(0) - var/obj/item/missile/M = new /obj/item/missile(chassis.loc) + var/obj/item/missile/M = new projectile(chassis.loc) M.primed = 1 - playsound(chassis, 'bang.ogg', 50, 1) + playsound(chassis, fire_sound, 50, 1) M.throw_at(target, missile_range, missile_speed) projectiles-- - chassis.log_message("Fired from [src.name], targeting [target].") + log_message("Fired from [src.name], targeting [target].") do_after_cooldown() return @@ -297,6 +303,8 @@ /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/flashbang name = "SGL-6 Grenade Launcher" icon_state = "mecha_grenadelnchr" + projectile = /obj/item/weapon/flashbang + fire_sound = 'bang.ogg' projectiles = 6 missile_speed = 1.5 projectile_energy_cost = 800 @@ -306,11 +314,11 @@ action(target) if(!action_checks(target)) return set_ready_state(0) - var/obj/item/weapon/flashbang/F = new /obj/item/weapon/flashbang(chassis.loc) - playsound(chassis, 'bang.ogg', 50, 1) + var/obj/item/weapon/flashbang/F = new projectile(chassis.loc) + playsound(chassis, fire_sound, 50, 1) F.throw_at(target, missile_range, missile_speed) projectiles-- - chassis.log_message("Fired from [src.name], targeting [target].") + log_message("Fired from [src.name], targeting [target].") spawn(det_time) F.prime() do_after_cooldown() @@ -320,6 +328,8 @@ /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/banana_mortar name = "Banana Mortar" icon_state = "mecha_bananamrtr" + projectile = /obj/item/weapon/bananapeel + fire_sound = 'bikehorn.ogg' projectiles = 15 missile_speed = 1.5 projectile_energy_cost = 100 @@ -336,11 +346,11 @@ action(target) if(!action_checks(target)) return set_ready_state(0) - var/obj/item/weapon/bananapeel/B = new /obj/item/weapon/bananapeel(chassis.loc) - playsound(chassis, 'bikehorn.ogg', 60, 1) + var/obj/item/weapon/bananapeel/B = new projectile(chassis.loc) + playsound(chassis, fire_sound, 60, 1) B.throw_at(target, missile_range, missile_speed) projectiles-- - chassis.log_message("Bananed from [src.name], targeting [target]. HONK!") + log_message("Bananed from [src.name], targeting [target]. HONK!") do_after_cooldown() return @@ -348,6 +358,8 @@ /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/mousetrap_mortar name = "Mousetrap Mortar" icon_state = "mecha_mousetrapmrtr" + projectile = /obj/item/weapon/mousetrap + fire_sound = 'bikehorn.ogg' projectiles = 15 missile_speed = 1.5 projectile_energy_cost = 100 @@ -364,11 +376,11 @@ action(target) if(!action_checks(target)) return set_ready_state(0) - var/obj/item/weapon/mousetrap/M = new /obj/item/weapon/mousetrap(chassis.loc) + var/obj/item/weapon/mousetrap/M = new projectile(chassis.loc) M.armed = 1 - playsound(chassis, 'bikehorn.ogg', 60, 1) + playsound(chassis, fire_sound, 60, 1) M.throw_at(target, missile_range, missile_speed) projectiles-- - chassis.log_message("Launched a mouse-trap from [src.name], targeting [target]. HONK!") + log_message("Launched a mouse-trap from [src.name], targeting [target]. HONK!") do_after_cooldown() return \ No newline at end of file diff --git a/code/game/mecha/mech_fabricator.dm b/code/game/mecha/mech_fabricator.dm index 626629b07b..649f6ce567 100644 --- a/code/game/mecha/mech_fabricator.dm +++ b/code/game/mecha/mech_fabricator.dm @@ -102,7 +102,8 @@ /obj/item/mecha_parts/mecha_equipment/tool/sleeper, /obj/item/mecha_parts/mecha_equipment/tool/syringe_gun, ///obj/item/mecha_parts/mecha_equipment/repair_droid, - /obj/item/mecha_parts/mecha_equipment/plasma_generator, + /obj/item/mecha_parts/mecha_equipment/generator, + /obj/item/mecha_parts/mecha_equipment/jetpack, /obj/item/mecha_parts/mecha_equipment/weapon/energy/taser, /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/lmg, /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/mousetrap_mortar, diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm index c349a39d16..784f2f111c 100644 --- a/code/game/mecha/mecha.dm +++ b/code/game/mecha/mecha.dm @@ -39,16 +39,14 @@ var/lights = 0 var/lights_power = 6 - //inner atmos machinery. Air tank mostly + //inner atmos var/use_internal_tank = 0 var/internal_tank_valve = ONE_ATMOSPHERE - var/internal_tank_wire = null - - var/obj/item/device/radio/radio = null - var/obj/machinery/atmospherics/portables_connector/connected_port = null //filling the air tanks var/obj/machinery/portable_atmospherics/canister/internal_tank var/datum/gas_mixture/cabin_air - var/obj/machinery/portable_atmospherics/canister/cabin + var/obj/machinery/atmospherics/portables_connector/connected_port = null + + var/obj/item/device/radio/radio = null var/max_temperature = 2500 var/internal_damage_threshold = 50 //health percentage below which internal damage is possible @@ -73,33 +71,20 @@ /obj/mecha/New() ..() events = new - radio = new(src) - radio.name = "[src] radio" - radio.icon = icon - radio.icon_state = icon_state - radio.subspace_transmission = 1 - src.icon_state += "-open" + icon_state += "-open" + add_radio() add_cabin() if(!add_airtank()) //we check this here in case mecha does not have an internal tank available by default - WIP removeVerb(/obj/mecha/verb/connect_to_port) removeVerb(/obj/mecha/verb/toggle_internal_tank) - src.spark_system.set_up(2, 0, src) - src.spark_system.attach(src) - cell = new(src) - src.cell.charge = 15000 - src.cell.maxcharge = 15000 - -//misc global_iteration datums - pr_int_temp_processor = new /datum/global_iterator/mecha_preserve_temp(list(src)) - pr_inertial_movement = new /datum/global_iterator/mecha_intertial_movement(null,0) - pr_give_air = new /datum/global_iterator/mecha_tank_give_air(list(src)) -// pr_location_temp_check = new /datum/global_iterator/mecha_location_temp_check(list(src)) - pr_internal_damage = new /datum/global_iterator/mecha_internal_damage(list(src),0) - + spark_system.set_up(2, 0, src) + spark_system.attach(src) + add_cell() + add_iterators() removeVerb(/obj/mecha/verb/disconnect_from_port) removeVerb(/atom/movable/verb/pull) - src.log_message("[src.name] created.") - src.loc.Entered(src) + log_message("[src.name] created.") + loc.Entered(src) return /obj/mecha/Del() @@ -121,6 +106,15 @@ internal_tank = new /obj/machinery/portable_atmospherics/canister/air(src) return internal_tank +/obj/mecha/proc/add_cell(var/obj/item/weapon/cell/C=null) + if(C) + C.forceMove(src) + cell = C + return + cell = new(src) + cell.charge = 15000 + cell.maxcharge = 15000 + /obj/mecha/proc/add_cabin() cabin_air = new cabin_air.temperature = T20C @@ -129,6 +123,19 @@ cabin_air.nitrogen = N2STANDARD*cabin_air.volume/(R_IDEAL_GAS_EQUATION*cabin_air.temperature) return cabin_air +/obj/mecha/proc/add_radio() + radio = new(src) + radio.name = "[src] radio" + radio.icon = icon + radio.icon_state = icon_state + radio.subspace_transmission = 1 + +/obj/mecha/proc/add_iterators() + pr_int_temp_processor = new /datum/global_iterator/mecha_preserve_temp(list(src)) + pr_inertial_movement = new /datum/global_iterator/mecha_intertial_movement(null,0) + pr_give_air = new /datum/global_iterator/mecha_tank_give_air(list(src)) + pr_internal_damage = new /datum/global_iterator/mecha_internal_damage(list(src),0) + /obj/mecha/proc/do_after(delay as num) sleep(delay) if(src) @@ -243,19 +250,25 @@ user.forceMove(get_turf(src)) user << "You climb out from [src]" return 0 - if(!can_move) - return 0 if(connected_port) if(world.time - last_message > 20) src.occupant_message("Unable to move while connected to the air system port") last_message = world.time return 0 - if(src.pr_inertial_movement.active()) - return 0 if(state) occupant_message("Maintenance protocols in effect") return - if(!get_charge()) + return domove(direction) + +/obj/mecha/proc/domove(direction) + return call((proc_res["dyndomove"]||src), "dyndomove")(direction) + +/obj/mecha/proc/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)) @@ -277,7 +290,6 @@ src.log_message("Movement control lost. Inertial movement started.") if(do_after(step_in)) can_move = 1 - return 1 return 0 @@ -518,7 +530,7 @@ WR.crowbar_salvage += E E.forceMove(WR) E.equip_ready = 1 - E.reliability = rand(30,100) + E.reliability = round(rand(E.reliability/3,E.reliability)) else E.forceMove(T) E.destroy() @@ -587,7 +599,7 @@ /obj/mecha/emp_act(severity) if(get_charge()) - use_power(min(cell.charge, (cell.maxcharge/2)/severity)) + use_power((cell.charge/2)/severity) take_damage(50 / severity,"energy") src.log_message("EMP detected",1) check_for_internal_damage(list(MECHA_INT_FIRE,MECHA_INT_TEMP_CONTROL,MECHA_INT_CONTROL_LOST,MECHA_INT_SHORT_CIRCUIT),1) @@ -1157,13 +1169,13 @@ var/output = {" [src.name] data @@ -1198,6 +1210,7 @@ "} return output + /obj/mecha/proc/report_internal_damage() var/output = null var/list/dam_reports = list( @@ -1567,6 +1580,8 @@ ///// Power stuff ///// /////////////////////// +/obj/mecha/proc/has_charge(amount) + return (get_charge()>=amount) /obj/mecha/proc/get_charge() return call((proc_res["dyngetcharge"]||src), "dyngetcharge")() @@ -1579,7 +1594,7 @@ return call((proc_res["dynusepower"]||src), "dynusepower")(amount) /obj/mecha/proc/dynusepower(amount) - if(get_charge()>=amount) + if(get_charge()) cell.use(amount) return 1 return 0 @@ -1624,15 +1639,16 @@ cabin_air.merge(removed) else if(pressure_delta < 0) //cabin pressure higher than release pressure var/datum/gas_mixture/t_air = mecha.get_turf_air() + pressure_delta = cabin_pressure - release_pressure if(t_air) - pressure_delta = min(cabin_pressure - t_air.return_pressure(), cabin_pressure - release_pressure) - if(pressure_delta > 0) //if location pressure is lower than cabin pressure - transfer_moles = pressure_delta*cabin_air.return_volume()/(cabin_air.return_temperature() * R_IDEAL_GAS_EQUATION) - var/datum/gas_mixture/removed = cabin_air.remove(transfer_moles) + pressure_delta = min(cabin_pressure - t_air.return_pressure(), pressure_delta) + if(pressure_delta > 0) //if location pressure is lower than cabin pressure + transfer_moles = pressure_delta*cabin_air.return_volume()/(cabin_air.return_temperature() * R_IDEAL_GAS_EQUATION) + var/datum/gas_mixture/removed = cabin_air.remove(transfer_moles) + if(t_air) t_air.merge(removed) - else //just delete the cabin gas, we're in space or some shit - var/datum/gas_mixture/removed = cabin_air.remove_ratio(1) - del(removed) + else //just delete the cabin gas, we're in space or some shit + del(removed) else return stop() return @@ -1652,7 +1668,7 @@ process(var/obj/mecha/mecha) if(!mecha.hasInternalDamage()) - return src.stop() + return stop() if(mecha.hasInternalDamage(MECHA_INT_FIRE)) if(!mecha.hasInternalDamage(MECHA_INT_TEMP_CONTROL) && prob(5)) mecha.clearInternalDamage(MECHA_INT_FIRE) diff --git a/code/game/mecha/mecha_construction_paths.dm b/code/game/mecha/mecha_construction_paths.dm index 27237d4a25..af4dda2b3d 100644 --- a/code/game/mecha/mecha_construction_paths.dm +++ b/code/game/mecha/mecha_construction_paths.dm @@ -89,10 +89,12 @@ spawn_result() var/obj/item/mecha_parts/chassis/const_holder = holder const_holder.construct = new /datum/construction/reversible/mecha/ripley(const_holder) + const_holder.icon = 'ripley_construct.dmi' + const_holder.icon_state = "ripley_step_14" const_holder.density = 1 + const_holder.overlays.len = 0 spawn() del src - feedback_inc("mecha_ripley_created",1) return @@ -167,69 +169,93 @@ switch(index) if(14) user.visible_message("[user] connects [holder] hydraulic systems", "You connect [holder] hydraulic systems.") + holder.icon_state = "ripley_step_13" if(13) if(diff==FORWARD) user.visible_message("[user] activates [holder] hydraulic systems.", "You activate [holder] hydraulic systems.") + holder.icon_state = "ripley_step_12" else user.visible_message("[user] disconnects [holder] hydraulic systems", "You disconnect [holder] hydraulic systems.") + holder.icon_state = "ripley_step_14" if(12) if(diff==FORWARD) user.visible_message("[user] adds the wiring to [holder].", "You add the wiring to [holder].") + holder.icon_state = "ripley_step_11" else user.visible_message("[user] deactivates [holder] hydraulic systems.", "You deactivate [holder] hydraulic systems.") + holder.icon_state = "ripley_step_13" if(11) if(diff==FORWARD) user.visible_message("[user] adjusts the wiring of [holder].", "You adjust the wiring of [holder].") + holder.icon_state = "ripley_step_10" else user.visible_message("[user] removes the wiring from [holder].", "You remove the wiring from [holder].") var/obj/item/weapon/cable_coil/coil = new /obj/item/weapon/cable_coil(get_turf(holder)) coil.amount = 4 + holder.icon_state = "ripley_step_12" if(10) if(diff==FORWARD) user.visible_message("[user] installs the central control module into [holder].", "You install the central computer mainboard into [holder].") del used_atom + holder.icon_state = "ripley_step_9" else user.visible_message("[user] disconnects the wiring of [holder].", "You disconnect the wiring of [holder].") + holder.icon_state = "ripley_step_11" if(9) if(diff==FORWARD) user.visible_message("[user] secures the mainboard.", "You secure the mainboard.") + holder.icon_state = "ripley_step_8" else user.visible_message("[user] removes the central control module from [holder].", "You remove the central computer mainboard from [holder].") new /obj/item/weapon/circuitboard/mecha/ripley/main(get_turf(holder)) + holder.icon_state = "ripley_step_10" if(8) if(diff==FORWARD) user.visible_message("[user] installs the peripherals control module into [holder].", "You install the peripherals control module into [holder].") del used_atom + holder.icon_state = "ripley_step_7" else user.visible_message("[user] unfastens the mainboard.", "You unfasten the mainboard.") + holder.icon_state = "ripley_step_9" if(7) if(diff==FORWARD) user.visible_message("[user] secures the peripherals control module.", "You secure the peripherals control module.") + holder.icon_state = "ripley_step_6" else user.visible_message("[user] removes the peripherals control module from [holder].", "You remove the peripherals control module from [holder].") new /obj/item/weapon/circuitboard/mecha/ripley/peripherals(get_turf(holder)) + holder.icon_state = "ripley_step_8" if(6) if(diff==FORWARD) user.visible_message("[user] installs internal armor layer to [holder].", "You install internal armor layer to [holder].") + holder.icon_state = "ripley_step_5" else user.visible_message("[user] unfastens the peripherals control module.", "You unfasten the peripherals control module.") + holder.icon_state = "ripley_step_7" if(5) if(diff==FORWARD) user.visible_message("[user] secures internal armor layer.", "You secure internal armor layer.") + holder.icon_state = "ripley_step_4" else user.visible_message("[user] pries internal armor layer from [holder].", "You prie internal armor layer from [holder].") var/obj/item/stack/sheet/metal/MS = new /obj/item/stack/sheet/metal(get_turf(holder)) MS.amount = 5 + holder.icon_state = "ripley_step_6" if(4) if(diff==FORWARD) user.visible_message("[user] welds internal armor layer to [holder].", "You weld the internal armor layer to [holder].") + holder.icon_state = "ripley_step_3" + flick("ripley_step_3active",holder) else user.visible_message("[user] unfastens the internal armor layer.", "You unfasten the internal armor layer.") + holder.icon_state = "ripley_step_5" if(3) if(diff==FORWARD) user.visible_message("[user] installs external reinforced armor layer to [holder].", "You install external reinforced armor layer to [holder].") else user.visible_message("[user] cuts internal armor layer from [holder].", "You cut the internal armor layer from [holder].") + holder.icon_state = "ripley_step_4" + flick("ripley_step_3active",holder) if(2) if(diff==FORWARD) user.visible_message("[user] secures external armor layer.", "You secure external reinforced armor layer.") @@ -244,6 +270,11 @@ user.visible_message("[user] unfastens the external armor layer.", "You unfasten the external armor layer.") return 1 + spawn_result() + ..() + feedback_inc("mecha_ripley_created",1) + return + /datum/construction/mecha/gygax_chassis @@ -270,7 +301,6 @@ const_holder.density = 1 spawn() del src - feedback_inc("mecha_gygax_created",1) return @@ -483,6 +513,10 @@ user.visible_message("[user] unfastens Gygax Armour Plates.", "You unfasten Gygax Armour Plates.") return 1 + spawn_result() + ..() + feedback_inc("mecha_gygax_created",1) + return /datum/construction/mecha/firefighter_chassis steps = list(list("key"=/obj/item/mecha_parts/part/ripley_torso),//1 @@ -508,7 +542,6 @@ const_holder.density = 1 spawn() del src - feedback_inc("mecha_firefighter_created",1) return @@ -673,6 +706,11 @@ user.visible_message("[user] unfastens the external armor layer.", "You unfasten the external armor layer.") return 1 + spawn_result() + ..() + feedback_inc("mecha_firefighter_created",1) + return + /datum/construction/mecha/honker_chassis @@ -699,7 +737,6 @@ const_holder.density = 1 spawn() del src - feedback_inc("mecha_honker_created",1) return @@ -748,8 +785,10 @@ del used_atom return 1 - - + spawn_result() + ..() + feedback_inc("mecha_honker_created",1) + return /datum/construction/mecha/durand_chassis steps = list(list("key"=/obj/item/mecha_parts/part/durand_torso),//1 @@ -775,7 +814,6 @@ const_holder.density = 1 spawn() del src - feedback_inc("mecha_durand_created",1) return /datum/construction/mecha/durand @@ -860,6 +898,11 @@ user.visible_message("[user] welds Durand Armour Plates to [holder].", "You weld Durand Armour Plates to [holder].") return 1 + spawn_result() + ..() + feedback_inc("mecha_durand_created",1) + return + /datum/construction/mecha/phazon_chassis result = "/obj/mecha/combat/phazon" @@ -907,7 +950,6 @@ const_holder.density = 1 spawn() del src - feedback_inc("mecha_odysseus_created",1) return @@ -1058,4 +1100,9 @@ user.visible_message("[user] welds external armor layer to [holder].", "You weld external armor layer to [holder].") else user.visible_message("[user] unfastens the external armor layer.", "You unfasten the external armor layer.") - return 1 \ No newline at end of file + return 1 + + spawn_result() + ..() + feedback_inc("mecha_odysseus_created",1) + return \ No newline at end of file diff --git a/code/game/mecha/mecha_wreckage.dm b/code/game/mecha/mecha_wreckage.dm index 90e2e15452..dd91a9a57d 100644 --- a/code/game/mecha/mecha_wreckage.dm +++ b/code/game/mecha/mecha_wreckage.dm @@ -8,7 +8,7 @@ desc = "Remains of some unfortunate mecha. Completely unrepairable." icon = 'mecha.dmi' density = 1 - anchored = 1 + anchored = 0 opacity = 0 var/list/welder_salvage = list(/obj/item/stack/sheet/plasteel,/obj/item/stack/sheet/metal,/obj/item/stack/rods) var/list/wirecutters_salvage = list(/obj/item/weapon/cable_coil) diff --git a/code/game/mecha/working/ripley.dm b/code/game/mecha/working/ripley.dm index 1b97acd350..24dcea75d0 100644 --- a/code/game/mecha/working/ripley.dm +++ b/code/game/mecha/working/ripley.dm @@ -22,8 +22,8 @@ max_temperature = 2500 health = 250 lights_power = 8 + damage_absorption = list("fire"=0.5,"bullet"=0.8,"bomb"=0.5) wreckage = /obj/effect/decal/mecha_wreckage/ripley/firefighter - list/damage_absorption = list("fire"=0.5,"bullet"=0.8,"bomb"=0.5) /obj/mecha/working/ripley/deathripley desc = "OH SHIT IT'S THE DEATHSQUAD WE'RE ALL GONNA DIE" @@ -52,7 +52,7 @@ if(href_list["drop_from_cargo"]) var/obj/O = locate(href_list["drop_from_cargo"]) if(O && O in src.cargo) - src.occupant << "\blue You unload [O]." + src.occupant_message("\blue You unload [O].") O.loc = get_turf(src) src.cargo -= O var/turf/T = get_turf(O) diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 5d0b42378e..c6541a31a9 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -456,9 +456,25 @@ set name = "Changelog" set category = "OOC" if (client) - src << browse_rsc('postcardsmall.jpg') - src << browse_rsc('somerights20.png') - src << browse_rsc('88x31.png') + src.getFiles('postcardsmall.jpg', + 'somerights20.png', + '88x31.png', + 'bug-minus.png', + 'cross-circle.png', + 'hard-hat-exclamation.png', + 'image-minus.png', + 'image-plus.png', + 'music-minus.png', + 'music-plus.png', + 'tick-circle.png', + 'wrench-screwdriver.png', + 'spell-check.png', + 'burn-exclamation.png', + 'chevron.png', + 'chevron-expand.png', + 'changelog.css', + 'changelog.js' + ) src << browse('changelog.html', "window=changes;size=675x650") client.changes = 1 @@ -1125,4 +1141,14 @@ note dizziness decrements automatically in the mob's Life() proc. /mob/proc/setMaxHealth(var/newMaxHealth) maxHealth = newMaxHealth -// ++++ROCKDTBEN++++ MOB PROCS //END \ No newline at end of file +// ++++ROCKDTBEN++++ MOB PROCS //END + +/* + * Sends resource files to client cache + */ +/mob/proc/getFiles() + if(!isemptylist(args)) + for(var/file in args) + src << browse_rsc(file) + return 1 + return 0 \ No newline at end of file diff --git a/code/modules/power/sd_DynamicAreaLighting.dm b/code/modules/power/sd_DynamicAreaLighting.dm index 7388288af2..c9f58e7119 100644 --- a/code/modules/power/sd_DynamicAreaLighting.dm +++ b/code/modules/power/sd_DynamicAreaLighting.dm @@ -446,8 +446,7 @@ atom luminosity = new_luminosity if(luminosity>0) sd_ApplyLum() - - +/* sd_SetOpacity(new_opacity as num) /* if(opacity != new_opacity) var/list/affected = sd_StripLocalLum() @@ -541,6 +540,100 @@ atom */ // end new_opacity = 0 block +*/ + + + sd_SetOpacity(new_opacity as num) + /* if(opacity != new_opacity) + var/list/affected = sd_StripLocalLum() + opacity = new_opacity + sd_ApplyLocalLum(affected) */ + if(opacity == (new_opacity ? 1 : 0)) + return + var/list/affected = new + //spill + var/atom/A + var/turf/T + var/turf/ATurf + + for(A in range(sd_top_luminosity,src)) + if(A.luminosity) //atoms with no luminosity don't affect anything, so why should we check the fuckers? + T = get_turf(A) + if(T) + var/list/V = view(A.luminosity,T) + if(!(src in V)) + continue + var/turfflag = 0 + if(A == T) + turfflag = 1 + if(get_dist(A,src)<=A.luminosity+turfflag) + affected[A] = V + //if(sd_light_outside && (A in sd_light_spill_turfs)) + // if(!spill) spill=new + // spill[A] = view(sd_light_outside, T) + opacity = new_opacity + if(opacity) + for(A in affected) + ATurf = get_turf(A) + if(ATurf) + for(T in affected[A]-view(A.luminosity, ATurf)) + T.sd_lumcount -= (A.luminosity-get_dist(A,T)) + + //if(T.tag == "sdd") + // slog << "\red lc(1)-([A.luminosity-get_dist(A,T)]) from [A] ([A.x],[A.y])" + // slog << "now [T.sd_lumcount]" + + + T.sd_LumUpdate() + /* + for(A in spill) + if(A.opacity && A!=src) continue + ATurf = A + while(ATurf && !istype(ATurf)) ATurf = ATurf.loc + if(ATurf) + //spill[A] -= view(sd_light_outside, A) + for(T in (A==src)?spill[A]:(spill[A]-view(sd_light_outside,ATurf))) + if(T.loc:sd_outside) continue + T.sd_lumcount -= (sd_light_outside-get_dist(A,T)) + + //if(T.tag == "sdd") + // slog << "\red lc(O)-([sd_light_outside-get_dist(A,T)]) from [A] ([A:x],[A:y])" + // slog << "now [T.sd_lumcount]" + + + T.sd_LumUpdate() + */ + + // end new_opacity = 1 block + + else + for(A in affected) + ATurf = get_turf(A) + if(ATurf) + for(T in view(A.luminosity, ATurf) - affected[A]) + T.sd_lumcount += (A.luminosity-get_dist(A,T)) + //if(T.tag == "sdd") + // slog << "\red lc(1)+([A.luminosity-get_dist(A,T)]) from [A] ([A.x],[A.y])" + // slog << "now [T.sd_lumcount]" + + T.sd_LumUpdate() + /* + for(A in spill) + if(A.opacity) continue + ATurf = A + while(ATurf && !istype(ATurf)) ATurf = ATurf.loc + if(ATurf) + for(T in (A==src)?spill[A]:(view(sd_light_outside, ATurf)-spill[A])) + if(T.loc:sd_outside) continue + T.sd_lumcount += (sd_light_outside-get_dist(A,T)) + //if(T.tag == "sdd") + // slog << "\red lc(O)+([sd_light_outside-get_dist(A,T)]) from [A] ([A:x],[A:y])" + // slog << "now [T.sd_lumcount]" + + T.sd_LumUpdate() + + */ + // end new_opacity = 0 block /// diff --git a/code/modules/research/designs.dm b/code/modules/research/designs.dm index c0ae68bd88..eda1a81551 100644 --- a/code/modules/research/designs.dm +++ b/code/modules/research/designs.dm @@ -796,6 +796,14 @@ datum req_tech = list("materials" = 4, "engineering" = 3) build_path = "/obj/item/mecha_parts/mecha_equipment/tool/drill/diamonddrill" + mech_generator_nuclear + name = "Exosuit Module Design (ExoNuclear Reactor)" + desc = "Compact nuclear reactor module" + id = "mech_generator_nuclear" + build_type = MECHFAB + req_tech = list("powerstorage"= 3, "engineering" = 3, "materials" = 3) + build_path = "/obj/item/mecha_parts/mecha_equipment/generator/nuclear" + //////////////////////////////////////// //////////Disk Construction Disks/////// diff --git a/html/bug-minus.png b/html/bug-minus.png new file mode 100644 index 0000000000000000000000000000000000000000..9934db406b10a1cf5ac4b2af5e2ac4b4f62fcbad GIT binary patch literal 657 zcmV;C0&e|@P)QtZ}JbkT*YxXZS?l2rw}>83Q%ozRkn%_78IgS7!^8$&)? z+E9a%#F;c>!h6$HVzjti>|1US!rcJ9m4o7eT$B zXgV5t5JM~)xikVEVnF_?UR2xIm(9)x&L2=L&bfv*?&~@D<4v1VImrkZ9?oH4(RccB-Ti;yV{Ku9cr&n}_ zGJ;b;2(^@!`dzJ6YmHjtkD*KDQg}J+f8qx!rIcudP=YZA4>2HsLl!u|Gz2TJR{}Qz zspXW%?K!2V1QEgz%wzBn0|Gc?fdfpVrN}dLUtW*5@S#93;W3YFh+-&2NP~E9c?Fv= zb$1Hh?-|sVns}Emy3#4(344wO?~m@evI>5cO*}WQ2{fnAX9^Zp7iR9y$f~@aTj!h{ zd!B^>_<}MYeAqkjn@q+OZr83w~G<}^rdv=;waGE zKA&-iPN%c=erx>lc(d88%k|`La^vI1^tI{9o0Cq_X}8<+pYwq`0ob*9I516vbs7eH rgt%K4mdkOR)oSI=jAdB>e+n=F)}9-67nRqY00000NkvXXu0mjfl4LT8 literal 0 HcmV?d00001 diff --git a/html/burn-exclamation.png b/html/burn-exclamation.png new file mode 100644 index 0000000000000000000000000000000000000000..b2a4f670a867798e8bce6559c93a488d72246567 GIT binary patch literal 727 zcmV;|0x127P)CmUpcg%G(}Nd17{mmU#z?|RBF5Ni2qBP0L@gl^ z1#I}ycH3>2-R*Aom#=n%dUP@~nfK-U-uK?j5SC@3{}~N`2PK{}3B&=*UJ2f>G2n0k?OfKYeTt(Mam~eQ%ke6kd zW!cHeNub$+xw$z=P%IXCo-dcnGq3Zy4w?!aAOx^fDygapG`pl!Dn-*Y2pEn7{A>pigsN5tdJCtIm%eT^fBxnH zn(c7!CK>Gx8Y)uNk|gn_Y0NKEfRA2tD5BEYGq$-p<~l-(2c#{)&VW)8Of9D<`xIqS z6qAKF9WUGOcKf`oy^`<~JGf6j9t;NMBpeg3)O>A*=JbMY4XCwO7Q)JmI@1PMuQ}j&aUMIt>@O*Mudha0m7# zEPA}f?e*ui&u5yZ{Cj}1ZusNVeQy8bpC3vRRBchdVBaqR1_1T~OEElAL>d49002ov JPDHLkV1iGdN5237 literal 0 HcmV?d00001 diff --git a/html/changelog.css b/html/changelog.css new file mode 100644 index 0000000000..09f0413ad5 --- /dev/null +++ b/html/changelog.css @@ -0,0 +1,33 @@ +a img {border:none;} +.bgimages16 li { + padding:2px 10px 2px 30px; + background-position:6px center; + background-repeat:no-repeat; + border:1px solid #ddd; + border-left:4px solid #999; + margin-bottom:2px; +} +.bugfix {background-image:url(bug-minus.png)} +.wip {background-image:url(hard-hat-exclamation.png)} +.tweak {background-image:url(wrench-screwdriver.png)} +.soundadd {background-image:url(music-plus.png)} +.sounddel {background-image:url(music-minus.png)} +.rscdel {background-image:url(cross-circle.png)} +.rscadd {background-image:url(tick-circle.png)} +.imageadd {background-image:url(image-plus.png)} +.imagedel {background-image:url(image-minus.png)} +.spellcheck {background-image:url(spell-check.png)} +.experiment {background-image:url(burn-exclamation.png)} +.sansserif {font-family:Tahoma,sans-serif;font-size:12px;} +.commit {margin-bottom:20px;font-size:100%;font-weight:normal;} +.changes {list-style:none;margin:5px 0;padding:0 0 0 25px;font-size:0.8em;} +.date {margin:10px 0;color:blue;border-bottom:2px solid #00f;width:60%;padding:2px 0;font-size:1em;font-weight:bold;} +.author {padding-left:10px;margin:0;font-weight:bold;font-size:0.9em;} +.drop {cursor:pointer;border:1px solid #999;display:inline;font-size:0.9em;padding:1px 20px 1px 5px;line-height:16px;} +.hidden {display:none;} +.indrop {margin:2px 0 0 0;clear:both;background:#fff;border:1px solid #ddd;padding:5px 10px;} +.indrop p {margin:0;font-size:0.8em;line-height:16px;margin:1px 0;} +.indrop img {margin-right:5px;vertical-align:middle;} +.closed {background:url(chevron-expand.png) right center no-repeat;} +.open {background:url(chevron.png) right center no-repeat;} +.lic {font-size:9px;} \ No newline at end of file diff --git a/html/changelog.html b/html/changelog.html index d975a0b408..0c578d7d38 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -1,10 +1,10 @@ - - + + /tg/ Station 13 Changelog - + + + - + + +
-
Space Station 13
+

Space Station 13

- /tg/Station 13 + /tg/Station 13
Traditional Games Space Station 13

@@ -47,47 +48,91 @@

-PLEASE READ: A PERSONAL APPEAL FROM CODERBUS COMMITER KOR PHAERON +PLEASE READ: A PERSONAL APPEAL FROM CODERBUS COMMITER KOR PHAERON
    -
  • http://nanotrasen.com/phpBB3/viewtopic.php?f=3&t=7278 +
  • http://nanotrasen.com/phpBB3/viewtopic.php?f=3&t=7278
-

Changelog

+

Changelog

+

Filter changes: + +

+
Icon legend
+
+

bug-minusBugfix.

+

hard-hat-exclamationWork in progress. Will be changed in future versions.

+

burn-exclamationExperimental feature. Visit the forum and express your opinion about it.

+

wrench-screwdriverTweak.

+

music-plusAdded sound.

+

music-minusRemoved sound.

+

cross-circleRemoved feature.

+

tick-circleAdded feature.

+

image-plusAdded icon or image.

+

image-minusRemoved icon or image.

+

spell-checkTweaked text.

+
- -4 February 2012, World Cancer Day -
    -
  • Erro updated: -
      -
    • Examining humans now works a bit differently. Some external suits and helmets can hide certain pieces of clothing so you don't see them when examining. Glasses are also now displayed when examining.
    • -
    • The job selection screen has been changed a little to hopefully make making changes there easier.
    • +
      +

      8 February 2012

      +

      ConstantA updated:

      +
        +
      • Added Exosuit Jetpack
      • +
      • Added Exosuit Nuclear Reactor (runs of normal, everyday uranium, maybe I'll switch it to run on enriched) - requires research (level 3 in Materials, Power Manipulation and Engineering)
      • +
      • Added Ripley construction steps sprites (courtesy of WJohnston - man, you're awesome)
      • +
      • Exosuit Sleeper can now inject occupant with reagents taken from Syringe Gun
      • +
      • Exosuit Cable Layer will now auto-dismantle floors
      • +
      • Exosuit Heavy Lazer cooldown increased, Scattershot now fires medium calibre ammo (less damage)
      • +
      • Exosuit wreckage can be pulled
      • +
      • EMP now drains half of current exosuit cell charge, not half of maximum charge.
      • +
      • Fixed several possible exosuit equipment runtimes
      • +
      • Introduced new markup to changelog. Javascript is extremely slow (in byond embedded browser) for some reason.
      -
    • Kor updated: -
        -
      • A new passive mob ability: Relentless. Relentless mobs cannot be shoved (though may still swap places with help intent)
      • -
      • Alien Queens, Juggernaut constructs, and Medical Borgs are all Relentless. Maybe the medborg can actually drag people to medbay on time now
      • -
      • Two constructs, the Juggernaut and the Wraith are now available for wizards and cultists to use soul stones with
      • -
      • The Chaplain is immune to cult stun, blind, deafen, and blood boil
      • +
    • +
      +

      4 February 2012, World Cancer Day

      +

      Erro updated:

      +
        +
      • Examining humans now works a bit differently. Some external suits and helmets can hide certain pieces of clothing so you don't see them when examining. Glasses are also now displayed when examining.
      • +
      • The job selection screen has been changed a little to hopefully make making changes there easier.
      -
    +

    Kor updated:

    +
      +
    • A new passive mob ability: Relentless. Relentless mobs cannot be shoved (though may still swap places with help intent)
    • +
    • Alien Queens, Juggernaut constructs, and Medical Borgs are all Relentless. Maybe the medborg can actually drag people to medbay on time now
    • +
    • Two constructs, the Juggernaut and the Wraith are now available for wizards and cultists to use soul stones with
    • +
    • The Chaplain is immune to cult stun, blind, deafen, and blood boil
    • +
    + -31 January 2012 +31 January 2012
    • Carn updated:
        -
      • Grammar & various bug-fixes
      • -
      • Thank-you to everyone who reported spelling/grammar mistakes. I'm still working on it, so if you spot anymore please leave a comment here. There's still lots to fix.
      • +
      • Grammar & various bug-fixes
      • +
      • Thank-you to everyone who reported spelling/grammar mistakes. I'm still working on it, so if you spot anymore please leave a comment here. There's still lots to fix.
      • Mining station areas should no longer lose air.
    -30 January 2012( +30 January 2012(
    • Sieve updated:
        @@ -103,12 +148,12 @@ should be listed in the changelog upon commit tho. Thanks. -->
    -29 January 2012, got Comp Arch exams on Wednesday :( +29 January 2012, got Comp Arch exams on Wednesday :(
    • Agouri updated:
        -
      • UPDATE ON THE UPDATE: Newspapers are now fully working, sorry for that. Some minor icon bugs fixed. Now I'm free to work on the contest prizes :3
      • -
      • Newscasters are now LIVE! Bug reports, suggestions for extra uses, tears etc go here.
      • +
      • UPDATE ON THE UPDATE: Newspapers are now fully working, sorry for that. Some minor icon bugs fixed. Now I'm free to work on the contest prizes :3
      • +
      • Newscasters are now LIVE! Bug reports, suggestions for extra uses, tears etc go here.
      • What ARE newscasters? Fans of the Transmetropolitan series might find them familiar. Basically, they're terminals connected to a station-wide news network. Users are able to submit channels of their own (one per identified user, with channels allowing feed stories by other people or, if you want the channel to be your very own SpaceJournal, being submit-locked to you), while others are able to read the channels, either through the terminals or a printed newspaper which contains every news-story circulating at the time of printing.
      • About censorship: You can censor channels and feed stories through Security casters, found in the HoS'es office and the Bridge. Alternatively, if you want a channel to stop operating completely, you can mark it with a D-Notice which will freeze it and make all its messages unreadable for the duration it is in effect. If you've got the access, of course.
      • Basically I think of the newscaster as nothing more as an additional Roleplaying tool. Grab a newspaper along with your donuts and coffee from the machines, read station rumors when you're manning your desk, be a station adventurer or journalist with your very own network journal!
      • @@ -118,7 +163,7 @@ should be listed in the changelog upon commit tho. Thanks. -->
    -28 January 2012 +28 January 2012
    • BubbleWrap updated:
        @@ -127,7 +172,7 @@ should be listed in the changelog upon commit tho. Thanks. -->
    -27 January 2012 +27 January 2012
    • LastyScratch updated:
        @@ -154,7 +199,7 @@ oxygen tanks, and breath masks.
      • Borg RCDs can no longer take down R-walls. (headcoder orders)
    -19 January 2012 +19 January 2012
    • Petethegoat updated:
        @@ -162,7 +207,7 @@ oxygen tanks, and breath masks.
    -17 January 2012 +17 January 2012
    • Doohl updated:
        @@ -170,27 +215,27 @@ oxygen tanks, and breath masks.
    -15 January 2012 +15 January 2012
    • Doohl updated:
        -
      • The radio overhaul 'Telecommunications' is now LIVE. Please submit any opinions/feedback in the forums and check the wiki article on Telecommunications for some more info for the curious.
      • +
      • The radio overhaul 'Telecommunications' is now LIVE. Please submit any opinions/feedback in the forums and check the wiki article on Telecommunications for some more info for the curious.
      • The AI satellite has been replaced with a communications satellite. You can get there via teleporter or space, just like the AI satellite. I highly recommend not bum-rushing the new satellite, as you may be killed if you don't have access. It's a very secure place.
      • Once a human's toxicity level reaches a certain point, they begin throwing up. This is a natural, but overall ineffective method of purging toxins from the body.
      • You can now travel Z-levels in Nuclear Emergency mode (the nuke disk is still bound to the station). This means the nuclear agents can and probably will fly off into space to blow up the comm satellite and shut down communications.
    -9 January 2012 +9 January 2012
    • ConstantA updated:
      • Reworked exosuit internal atmospherics (the situation when exosuit is set to take air from internal tank, otherwise cabin air = location air):
          -
        • If current cabin presure is lower than "tank output pressure", the air will be taken from internal tank (if possible), to equalize cabin pressure to "tank output pressure"
        • -
        • If current cabin presure is higher than "tank output pressure", the air will be siphoned from cabin to location until cabin pressure is equal to "tank output pressure"
        • +
        • If current cabin presure is lower than &quot;tank output pressure&quot;, the air will be taken from internal tank (if possible), to equalize cabin pressure to &quot;tank output pressure&quot;
        • +
        • If current cabin presure is higher than &quot;tank output pressure&quot;, the air will be siphoned from cabin to location until cabin pressure is equal to &quot;tank output pressure&quot;
        • Tank air is not altered in any way even if it's overheated or overpressured - connect exosuit to atmos connector port to vent it
        • -
        • "Tank output pressure" can be set through Maintenance window - Initiate maintenance protocol to get the option
        • +
        • &quot;Tank output pressure&quot; can be set through Maintenance window - Initiate maintenance protocol to get the option
      • Fixed bug that prevented exosuit tank air updates if exosuit was connected to connector port
      • @@ -201,7 +246,7 @@ oxygen tanks, and breath masks.
      -8 January 2012 +8 January 2012
      • Agouri updated:
          @@ -211,7 +256,7 @@ oxygen tanks, and breath masks.
      -7 January 2012 +7 January 2012
      • Donkieyo updated:
          @@ -224,7 +269,7 @@ oxygen tanks, and breath masks.
        • You can now send emergancy messages to Centcomm (Or, with some.. tampering, the Syndicate.) via a comms console. (This occurs in much the fashion as a prayer.)
      -3 January 2012 +3 January 2012
      • Erro updated:
          @@ -236,11 +281,11 @@ oxygen tanks, and breath masks.
      -1 January 2012 (12 more months until doomsday) +1 January 2012 (12 more months until doomsday)
      • Doohl updated:
          -
        • XENOS ARE NOW IMMUNE TO STUNNING! To compensate, stunning via tasers/batons now slows them down significantly.
        • +
        • XENOS ARE NOW IMMUNE TO STUNNING! To compensate, stunning via tasers/batons now slows them down significantly.
      • Polymorph updated: @@ -250,7 +295,7 @@ oxygen tanks, and breath masks.
      -29 December 2011 +29 December 2011
      • ConstantA updated:
          @@ -265,7 +310,7 @@ oxygen tanks, and breath masks.
      -28 December 2011 +28 December 2011
      • RavingManiac updated:
          @@ -277,7 +322,7 @@ oxygen tanks, and breath masks.
      -27 December 2011 +27 December 2011
      • Errorage updated:
          @@ -289,12 +334,12 @@ oxygen tanks, and breath masks.
      -25 December 2011 +25 December 2011
      • ConstantA updated:
        • Circuit boards for Odysseus mech can be ordered by QM
        • -
        • Designs for them were added to R&D
        • +
        • Designs for them were added to R&amp;D
      • Kor updated: @@ -310,7 +355,7 @@ oxygen tanks, and breath masks.
      • -24 December 2011 +24 December 2011
        • Rockdtben updated:
            @@ -320,7 +365,7 @@ oxygen tanks, and breath masks.
          -23 December 2011 +23 December 2011
          • ConstantA updated:
              @@ -348,7 +393,7 @@ start of their shift.
            -21 December 2011 +21 December 2011
            • RavingManiac updated:
                @@ -356,32 +401,32 @@ start of their shift.
            -19 December 2011 +19 December 2011
            • Kor updated:
                -
              • General/Misc Changes
              • +
              • General/Misc Changes
                • Escape pods no longer go to the horrific gibbing chambers. Rather, they will be picked up by a salvage ship in deep space. (This basically changes nothing mechanics wise, just fluff)
                • An ion rifle now spawns on the nuclear operative shuttle. Maybe this will help with them getting destroyed by sec borgs every round?
                -
                -
              • Wizard Changes
              • + +
              • Wizard Changes
                • The wizard can now purchase magic artefacts in addition to spells in a subsection of the spellbook.
                • The first (and currently only) new artefact is the Staff of Change, which functions as a self recharging energy weapon with some special effects.
                • The wizard has a new alternative set of robes on his shuttle.
                • -
                  +
                -
              • Cult Changes
                • +
                • Cult Changes
                  • Cultists now each start with three words (join, blood, self). No more will you suffer at the hands of cultists who refuse to share words.
                  • The starting supply talisman can now be used five times and can now be used to spawn armor and a blade.
                  • Replaced the sprites on the cultist robes/hood.
                  • -
                  +
            -18 December 2011 +18 December 2011
            • Carnwennan updated:
                @@ -395,7 +440,7 @@ start of their shift.
              -17 December 2011 +17 December 2011
              • Erro updated:
                  @@ -404,7 +449,7 @@ start of their shift.
                -14 December 2011 +14 December 2011
                • Erro updated:
                    @@ -418,7 +463,7 @@ start of their shift.
                  -11 December 2011 +11 December 2011
                  • NEO updated:
                      @@ -428,7 +473,7 @@ start of their shift.
                    -10 December 2011 +10 December 2011
                    • Doohl updated:
                        @@ -451,7 +496,7 @@ start of their shift.
                      -8 December 2011 +8 December 2011
                      • Errorage updated:
                          @@ -466,9 +511,9 @@ start of their shift.
                        -3 December 2011 +3 December 2011
                          -
                        • Pete & Erro Christmas update: +
                        • Pete & Erro Christmas update:
                          • Reinforced metal renamed to steel and steel floor tile renamed to metal floor tile to avoid confusion before it even happens.
                          • It is no longer possible to make steel from metal or vice versa or from the autolathe. You can however make metal from the autolathe and still insert steel to increase the metal resource.
                          • @@ -502,7 +547,7 @@ start of their shift.
                          -30 November 2011 +30 November 2011
                          • Vinyl Scratch updated:
                              @@ -512,7 +557,7 @@ start of their shift.
                            -27 November 2011 +27 November 2011
                            • Kor updated:
                                @@ -523,7 +568,7 @@ start of their shift.
                              -22 November 2011 +22 November 2011
                              • Doohl updated:
                                  @@ -532,11 +577,11 @@ start of their shift.
                                -19 November 2011 +19 November 2011
                                • Doohl updated:
                                    -
                                  • Toggling admin midis will now DISABLE THE CURRENT MIDI OH MY GOSH!
                                  • +
                                  • Toggling admin midis will now DISABLE THE CURRENT MIDI OH MY GOSH!
                                • Tobba updated: @@ -556,7 +601,7 @@ start of their shift.
                                -16 November 2011 +16 November 2011
                                • Tobba updated:
                                    @@ -565,7 +610,7 @@ start of their shift.
                                  -16 November 2011 +16 November 2011
                                  • Petethegoat updated:
                                      @@ -574,7 +619,7 @@ start of their shift.
                                    -7 November 2011 +7 November 2011
                                    • Kor updated:
                                        @@ -585,7 +630,7 @@ start of their shift.
                                      -29 October 2011 +29 October 2011
                                      • ConstantA updated:
                                          @@ -605,7 +650,7 @@ start of their shift.
                                        -29 October 2011 +29 October 2011
                                        • Petethegoat updated:
                                            @@ -617,12 +662,12 @@ start of their shift.
                                          • Doohl updated:
                                            • More hairs added and a very long beard.
                                            • -
                                            • Finally fixed the request console announcements going AMP AMP AMP all the time when you use punctuation.
                                            • +
                                            • Finally fixed the request console announcements going AMP AMP AMP all the time when you use punctuation.
                                          -27 October 2011 +27 October 2011
                                          • Mport updated:
                                              @@ -631,7 +676,7 @@ start of their shift.
                                            -21 October 2011, Tuesday: +21 October 2011, Tuesday:
                                            • Errorage updated:
                                                @@ -659,7 +704,7 @@ start of their shift.
                                              -18 October 2011, Tuesday: +18 October 2011, Tuesday:
                                              • Errorage updated:
                                                  @@ -679,7 +724,7 @@ start of their shift.
                                                -15 October 2011, White Cane Safety Day: +15 October 2011, White Cane Safety Day:
                                                • Agouri updated:
                                                    @@ -698,17 +743,17 @@ start of their shift.
                                                  -11 October 2011: +11 October 2011:
                                                  • ConstantA updated:
                                                    • Added radios to exosuits. Setting can be found in 'Electronics' menu.
                                                    • -
                                                    • Exosuit maintenance can be initiated even if it's occupied. The pilot must permit maintenance through 'Permissions & Logging' - 'Permit maintenance protocols'. For combat exosuits it's disabled by default. While in maintenance mode, exosuit can't move or use equipment.
                                                    • +
                                                    • Exosuit maintenance can be initiated even if it's occupied. The pilot must permit maintenance through 'Permissions &amp; Logging' - 'Permit maintenance protocols'. For combat exosuits it's disabled by default. While in maintenance mode, exosuit can't move or use equipment.
                                                  -8 October 2011: +8 October 2011:
                                                  • Doohl updated:
                                                      @@ -725,7 +770,7 @@ start of their shift.
                                                    -2 October 2011: +2 October 2011:
                                                    • Petethegoat updated:
                                                        @@ -740,7 +785,7 @@ start of their shift.
                                                      -1 October 2011: +1 October 2011:
                                                      • Knognob Lungsparkle updated:
                                                          @@ -750,7 +795,7 @@ start of their shift.
                                                        -28 September 2011: +28 September 2011:
                                                        • Rolan7 updated:
                                                            @@ -764,7 +809,7 @@ start of their shift.
                                                          -22 September 2011, OneWebDay: +22 September 2011, OneWebDay:
                                                          • Errorage updated:
                                                              @@ -774,7 +819,7 @@ start of their shift.
                                                            -20 September 2011, 10 year anniversary of the declaration of the "war on terror": +20 September 2011, 10 year anniversary of the declaration of the "war on terror":
                                                            • Errorage updated:
                                                                @@ -784,7 +829,7 @@ start of their shift.
                                                              -18 September 2011, World Water Monitoring Day: +18 September 2011, World Water Monitoring Day:
                                                              • Errorage updated:
                                                                  @@ -810,7 +855,7 @@ start of their shift.
                                                                -17 September 2011, Operation Market Garden remembrance day: +17 September 2011, Operation Market Garden remembrance day:
                                                                • Errorage updated:
                                                                    @@ -819,7 +864,7 @@ start of their shift.
                                                                  -14 September 2011: +14 September 2011:
                                                                  • Lasty updated:
                                                                      @@ -843,7 +888,7 @@ start of their shift.
                                                                  -13 September 2011: +13 September 2011:
                                                                  • Errorage updated:
                                                                      @@ -871,7 +916,7 @@ start of their shift.
                                                                    -11 September 2011: +11 September 2011:
                                                                    • Errorage updated:
                                                                        @@ -883,7 +928,7 @@ start of their shift.
                                                                      -10 September 2011: +10 September 2011:
                                                                      • Errorage updated:
                                                                          @@ -912,7 +957,7 @@ start of their shift.
                                                                        -8 September 2011: +8 September 2011:
                                                                        • Lasty updated:
                                                                            @@ -922,7 +967,7 @@ start of their shift.
                                                                          -6 September 2011 +6 September 2011
                                                                          • Greek Rioter updated:
                                                                              @@ -970,7 +1015,7 @@ start of their shift.
                                                                          -5 September 2011. +5 September 2011.
                                                                          • Rageroro updated:
                                                                              @@ -980,7 +1025,7 @@ start of their shift.
                                                                            -4 September 2011. +4 September 2011.
                                                                            • Urist McDorf updated:
                                                                                @@ -994,7 +1039,7 @@ start of their shift.
                                                                            • Erro updated:
                                                                                -
                                                                              • R'n'D and Gas Storage locations have been swapped in order for R&D to be given a hallway-facing table, just like Chemistry.
                                                                              • +
                                                                              • R'n'D and Gas Storage locations have been swapped in order for R&D to be given a hallway-facing table, just like Chemistry.
                                                                              • Buckling someone to a chair now causes them to face in the same direction as the chair.
                                                                              • Conveyor will now move only 10 items per game cycle. This is to prevent miners from overloading the belts with 2000 pieces of ore and slowing down time by turning it on. Does not apply to mobs on belt.
                                                                              @@ -1030,7 +1075,7 @@ start of their shift.
                                                                          -31 August 2011. +31 August 2011.
                                                                          • Lasty updated:
                                                                              @@ -1051,7 +1096,7 @@ start of their shift.
                                                                          -28 August 2011. +28 August 2011.
                                                                          • Doohl updated:
                                                                              @@ -1061,7 +1106,7 @@ start of their shift.
                                                                          -26 August 2011. +26 August 2011.
                                                                          • Mport updated:
                                                                              @@ -1081,7 +1126,7 @@ start of their shift.
                                                                          -20 August 2011. +20 August 2011.
                                                                          • Doohl updated:
                                                                              @@ -1089,7 +1134,7 @@ start of their shift.
                                                                          -16 August 2011. +16 August 2011.
                                                                          • Superxpdude updated:
                                                                              @@ -1104,16 +1149,16 @@ start of their shift.
                                                                          -15 August 2011. +15 August 2011.
                                                                          • Superxpdude updated:
                                                                              -
                                                                            • NEW MINING STATION, POST YOUR OPINIONS AND BUGS HERE
                                                                            • +
                                                                            • NEW MINING STATION, POST YOUR OPINIONS AND BUGS HERE
                                                                            • Added some new awesome mining-related sprites by Petethegoat. All credit for the sprites goes to him.
                                                                          -9 August 2011. +9 August 2011.
                                                                          • Mport updated:
                                                                              @@ -1124,7 +1169,7 @@ start of their shift.
                                                                          -5 August 2011. +5 August 2011.
                                                                          • Mport updated:
                                                                              @@ -1133,7 +1178,7 @@ start of their shift.
                                                                          -3 August 2011. +3 August 2011.
                                                                          • Superxpdude updated:
                                                                              @@ -1143,7 +1188,7 @@ start of their shift.
                                                                          -2 August 2011. The day the earth stood still. +2 August 2011. The day the earth stood still.
                                                                          • Agouri updated:
                                                                              @@ -1162,7 +1207,7 @@ start of their shift.
                                                                          -30 July 2011. +30 July 2011.
                                                                          • Superxpdude Updated:
                                                                              @@ -1179,13 +1224,13 @@ start of their shift.
                                                                          -29 July 2011. - Day of Forum revival! +29 July 2011. - Day of Forum revival!
                                                                          • Doohl updated:
                                                                            • Bugfix: Metroids should never "shut down" and just die in a corner when they begin starving. And so, hungry Metroids are a force to be feared.
                                                                            • The Cargo computers now have the ability to cancel pending orders to refund credits. This was put in place so that idiots couldn't waste all the cargo points and run off. However, if the shuttle is en route to the station you won't be able to cancel orders.
                                                                            • -
                                                                            • Bugfix: the manifest has been fixed! Additionally, the manfiest is now updated realtime; job changes and new arrivals will be automatically updated into the manifest. Joy!
                                                                            • +
                                                                            • Bugfix: the manifest has been fixed! Additionally, the manfiest is now updated realtime; job changes and new arrivals will be automatically updated into the manifest. Joy!
                                                                            • Metroids, when wrestled off of someone's head or beaten off, now get stunned for a few seconds.
                                                                          • Agouri updated: @@ -1199,7 +1244,7 @@ start of their shift.
                                                                          • EVA and CMO office modified to accomodate the new suits and SSUs. Look, I'm not a competent mapper, okay? Fuck you too. A mapper is strongly recommended to rearrange my half assed shit.
                                                                          • Soda cans, cigarette packets, cigarettes and cigars as well as bullet casings are now considered trash and can be picked up by the trashbag. Now you can annoy the janitor even more!
                                                                          • Sprite credit goes to Alex Jones, his portfolio can be found here: http://bspbox.com. Thanks a lot, bro.
                                                                          • -
                                                                          • With the recent forum fuss and all that, I've got a thread to specifically contain rants and bug reports about this update. Click me
                                                                          • +
                                                                          • With the recent forum fuss and all that, I've got a thread to specifically contain rants and bug reports about this update. Click me
                                                                        • Uhangi updated:
                                                                            @@ -1212,7 +1257,7 @@ start of their shift.
                                                                        -4 July - 28 July 2011. +4 July - 28 July 2011.
                                                                        • Trubble Bass updated (committed by Superxpdude): @@ -1230,7 +1275,7 @@ start of their shift.
                                                                      • Superxpdude updated:
                                                                          -
                                                                        • Added in the Submachine Gun to R&D.
                                                                        • +
                                                                        • Added in the Submachine Gun to R&D.
                                                                        • Syndicate agents now have Mini-Uzis.
                                                                        • Added an exosuit recharged to the mining station.
                                                                        • New labcoats for scientists, virologists, chemists, and genetecists.
                                                                        • @@ -1295,8 +1340,8 @@ start of their shift.
                                                                      • Doohl updated:
                                                                          -
                                                                        • A new alien race: Metroids! They are a mostly non-sentient race of jellyfish-like organisms that float in the air and feed on the life energy of other organisms. While most Metroids have never shown signs of self-awareness, they do exhibit signs of basic logic and reasoning skills as well as very sophisticated perception. Nanotrasen has shipped two baby Metroids for the xenobiology department. They should be handled with the utmost care - they are some of the deadliest beings in the known universe!
                                                                        • -
                                                                        • R&D gets a new toy: the freeze gun. Despite popular belief, this will not literally freeze things!
                                                                        • +
                                                                        • A new alien race: Metroids! They are a mostly non-sentient race of jellyfish-like organisms that float in the air and feed on the life energy of other organisms. While most Metroids have never shown signs of self-awareness, they do exhibit signs of basic logic and reasoning skills as well as very sophisticated perception. Nanotrasen has shipped two baby Metroids for the xenobiology department. They should be handled with the utmost care - they are some of the deadliest beings in the known universe!
                                                                        • +
                                                                        • R&D gets a new toy: the freeze gun. Despite popular belief, this will not literally freeze things!
                                                                        • Every single chemical reagent has been assigned a color.
                                                                        • You can now see beakers fill up with chemicals. You can also observe how the colors mix inside the beakers. Spray bottles also will also show the color of whatever you're spraying.
                                                                        • Added a timestamp to combat logs.
                                                                        • @@ -1306,7 +1351,7 @@ start of their shift.
                                                                      -4 July 2011. +4 July 2011.
                                                                      • Agouri updated:
                                                                          @@ -1327,7 +1372,7 @@ start of their shift.
                                                                        -18 June 2011. +18 June 2011.
                                                                        • Agouri updated:
                                                                            @@ -1337,7 +1382,7 @@ start of their shift.

                                                                          -7 June 2011. +7 June 2011.
                                                                          • TLE updated:
                                                                              @@ -1369,7 +1414,7 @@ start of their shift.

                                                                            -1 June 2011, Canadian Day Against Homophobia +1 June 2011, Canadian Day Against Homophobia
                                                                            • Noise updated:
                                                                                @@ -1402,7 +1447,7 @@ start of their shift.
                                                                                • Added exosuit energy relay equipment. Uses area power (any power channel available) instead of powercell for movement and actions, recharges powercell.
                                                                                • -
                                                                                • Exosuits can be renamed. Command is in Permissions & Logging menu.
                                                                                • +
                                                                                • Exosuits can be renamed. Command is in Permissions & Logging menu.
                                                                                • Lowered construction time for Ripley parts.
                                                                                • Exosuit wreckage can be salvaged for exosuit parts (torso, limbs etc).
                                                                                • Speed-up for mecha.
                                                                                • @@ -1441,7 +1486,7 @@ available) instead of powercell for movement and actions, recharges powercell.
                                                                                  -19 May 2011 +19 May 2011
                                                                                  • Errorage updated:
                                                                                      @@ -1453,7 +1498,7 @@ available) instead of powercell for movement and actions, recharges powercell.NEO updated:
                                                                                        -
                                                                                      • Armour overhaul, phase 3. See rev notes for details.
                                                                                      • +
                                                                                      • Armour overhaul, phase 3. See rev notes for details.
                                                                                      • AI cores should now block movement.
                                                                                      • MMIs are now properly buildable with the mecha fabricator.
                                                                                      @@ -1472,17 +1517,17 @@ available) instead of powercell for movement and actions, recharges powercell.
                                                                                    • New serviceborg sprite option.
                                                                                    • Map changes to robotics; removed borg fabricators and added second exosuit fabricator.
                                                                                    • -
                                                                                    • Cyborg parts are now built from exosuit fabricators and benefit from research.
                                                                                    • +
                                                                                    • Cyborg parts are now built from exosuit fabricators and benefit from research.
                                                                                    • New exosuit fabricator and borg frame sprites.

                                                                                  -14 May 2011, late friday 13 update. +14 May 2011, late friday 13 update.
                                                                                  • K0000 updated:
                                                                                      -
                                                                                    • Cult updates:
                                                                                    • +
                                                                                    • Cult updates:
                                                                                    • New rune! Stun rune. When used as rune, briefly stuns everyone around (including cultists). When imbued into a talisman, hit someone to stun and briefly mute them. Spawnable with the starter talisman.
                                                                                    • Imbue rune doesnt disappear after succesful invocation, only the source rune.
                                                                                    • Chaplain's bible now has 20% chance to convert a cultist (was 10%), and gives a message on success.
                                                                                    • @@ -1501,18 +1546,18 @@ available) instead of powercell for movement and actions, recharges powercell.
                                                                                    • Chemistry update
                                                                                    • In containers where there isn't a perfect ratio of reagents, reactions won't consume ALL of the related reagents (so if you mix 10 anti-toxin with 20 inaprovaline, you get 10 tricordrazine and 10 inaprovaline rather then just 10 tricodrazine)
                                                                                    • -
                                                                                    • Catalysts: some reactions might need presence of an element, while not directly consuming it.
                                                                                    • +
                                                                                    • Catalysts: some reactions might need presence of an element, while not directly consuming it.
                                                                                    • Reactions changed to use catalysts: all recipes that require Universal Enzyme now require 5 units of the enzyme but the enzyme isn't consumed (So Tofu, Cheese, Moonshine, Wine, Vodka, and Kahlua recipes).
                                                                                  • Errorage updated:
                                                                                      -
                                                                                    • Smooth tables: Tables now automatically determine which direction and sprite they'll use. They will connect to any adjacent table unless there is a window between them (regular, reinforced, tinted, whichever)
                                                                                    • +
                                                                                    • Smooth tables: Tables now automatically determine which direction and sprite they'll use. They will connect to any adjacent table unless there is a window between them (regular, reinforced, tinted, whichever)

                                                                                  -7 May 2011, Mother's day? +7 May 2011, Mother's day?
                                                                                  • Agouri updated:
                                                                                      @@ -1535,22 +1580,22 @@ available) instead of powercell for movement and actions, recharges powercell.

                                                                                    -6 May 2011, AMURRICA FUCK YEAH day +6 May 2011, AMURRICA FUCK YEAH day
                                                                                      -
                                                                                    • DANGERCON UPDATE:Agouri and Erro updated(I'm in the DangerCon team now, nyoro~n :3): +
                                                                                    • DANGERCON UPDATE:Agouri and Erro updated(I'm in the DangerCon team now, nyoro~n :3):
                                                                                      • Backpacks removed from all players. It was unrealistic. You can now had to the living quarters to get one from the personal closets there.
                                                                                      • Any firearms now send you to critical in 1-2 shots. Doctors need to get the wounded man to surgery to provide good treatment. Guide for bullet removal is up on the wiki.
                                                                                      • Brute packs and kelotane removed altogether to encourage use of surgery for heavy injury.
                                                                                      • Just kidding
                                                                                      • Fireaxe cabinets and Extinguisher wall-mounted closets now added around the station, thank Nanotransen for that.
                                                                                      • -
                                                                                      • Because of Nanotransen being Nanotransen, the fire cabinets are electrically operated. AIs can lock them and you can hack them if you want the precious axe inside and it's locked. The axe itself uses an experimental two-handed system, so while it's FUCKING ROBUST you need to wield it to fully unlock its capabilities. Pick up axe and click it in your hand to wield it, click it again or drop to unwield and carry it.You can also use it as a crowbar for cranking doors and firedoors open when wielded, utilising the lever on the back of the blade. And I didn't lie to you. It's fucking robust.
                                                                                      • +
                                                                                      • Because of Nanotransen being Nanotransen, the fire cabinets are electrically operated. AIs can lock them and you can hack them if you want the precious axe inside and it's locked. The axe itself uses an experimental two-handed system, so while it's FUCKING ROBUST you need to wield it to fully unlock its capabilities. Pick up axe and click it in your hand to wield it, click it again or drop to unwield and carry it.You can also use it as a crowbar for cranking doors and firedoors open when wielded, utilising the lever on the back of the blade. And I didn't lie to you. It's fucking robust.
                                                                                      • Fireaxe, when wielded, fully takes up your other hand as well. You can't switch hands and the fireaxe itself is unwieldy and won't fit anywhere.
                                                                                      • A fireaxe cabinet can also be smashed if you've got a strong enough object in your hand.
                                                                                      • EXTINGUISHER CLOSETS, made by dear Erro, can be found in abundance around the station. Click once to open them, again to retrieve the extinguisher, attack with extinguisher to place it back. Limited uses, but we've got plans for our little friend. -
                                                                                      • Sprite kudos go to: Cheridan for most of them, Khodoque for the fantastic fireaxe head. I merged those two. Also thanks to matty and Arcalane for giving it a shot.
                                                                                      • +
                                                                                      • Sprite kudos go to: Cheridan for most of them, Khodoque for the fantastic fireaxe head. I merged those two. Also thanks to matty and Arcalane for giving it a shot.
                                                                                      • Has the piano got TOO annoying? Try the fire axe...
                                                                                      • -
                                                                                      • Oh, and tou can now construct Light floors! To do it: Use wires on glass, then metal on the produced assembly, then place it on an uncovered floor like you would when replacing broken floor tiles. To deconstruct: Crowbar on light floor, use crowbar on produced assembly to remove metal, wirecutters to seperate the wires from the glass. Sprites by delicious Hempuli.
                                                                                      • +
                                                                                      • Oh, and tou can now construct Light floors! To do it: Use wires on glass, then metal on the produced assembly, then place it on an uncovered floor like you would when replacing broken floor tiles. To deconstruct: Crowbar on light floor, use crowbar on produced assembly to remove metal, wirecutters to seperate the wires from the glass. Sprites by delicious Hempuli.
                                                                                      • Got something to bitch about? Got a bug to report? Want to create drama? Did the clown destroy your piano while you were playing an amazing space remix of the moonlight sonata? Give it here
                                                                                      @@ -1558,7 +1603,7 @@ available) instead of powercell for movement and actions, recharges powercell.Rastaf.Zero updated:
                                                                                        -
                                                                                      • New uniforms added for captain and chaplain, in their respective lockers. Credits to Farart.
                                                                                      • +
                                                                                      • New uniforms added for captain and chaplain, in their respective lockers. Credits to Farart.
                                                                                    • @@ -1580,7 +1625,7 @@ available) instead of powercell for movement and actions, recharges powercell.
                                                                                      -17 April 2011, World Hemophilia Day +17 April 2011, World Hemophilia Day
                                                                                      • Microwave updated:
                                                                                          @@ -1723,7 +1768,7 @@ available) instead of powercell for movement and actions, recharges powercell.
                                                                                          -2 April 2011, International Children's Book Day +2 April 2011, International Children's Book Day
                                                                                          • Microwave updated:
                                                                                              @@ -1746,7 +1791,7 @@ available) instead of powercell for movement and actions, recharges powercell.
                                                                                              -26 March 2011 +26 March 2011
                                                                                              • Rastaf0 updated:
                                                                                                  @@ -1773,13 +1818,13 @@ resistance (only slight don't run into a fire).
                                                                                                • ConstantA updated:
                                                                                                  • Removed redundand steps from Gygax and HONK construction.
                                                                                                  • -
                                                                                                  • Added some mecha equipment designs to R&D.
                                                                                                  • +
                                                                                                  • Added some mecha equipment designs to R&D.

                                                                                                -23 March 2011, World Meteorological Day +23 March 2011, World Meteorological Day
                                                                                                • Neo updated:
                                                                                                    @@ -1795,7 +1840,7 @@ resistance (only slight don't run into a fire).
                                                                                                  • Energy swords now come in blue, green, purple and red.
                                                                                                  • Cameras are now constructable and dismantlable. (Code donated by Powerful Station 13)
                                                                                                  • Updated the change network verb for AIs. (Code donated by Powerful Station 13)
                                                                                                  • -
                                                                                                  • Added gold, silver and diamond pickaxes to R&D which mine faster.
                                                                                                  • +
                                                                                                  • Added gold, silver and diamond pickaxes to R&D which mine faster.
                                                                                                • Agouri updated: @@ -1859,7 +1904,7 @@ resistance (only slight don't run into a fire).

                                                                                                • -18 March 2011 +18 March 2011
                                                                                                  • Errorage updated:
                                                                                                      @@ -1891,7 +1936,7 @@ resistance (only slight don't run into a fire).

                                                                                                    -15 March 2011, International Day Against Police Brutality +15 March 2011, International Day Against Police Brutality
                                                                                                    • Errorage updated:
                                                                                                        @@ -1910,7 +1955,7 @@ resistance (only slight don't run into a fire).
                                                                                                      • Neo updated:
                                                                                                          -
                                                                                                        • New R&D Item: The 'Bag of holding'. (Sprite by Cheridan)
                                                                                                        • +
                                                                                                        • New R&D Item: The 'Bag of holding'. (Sprite by Cheridan)
                                                                                                        • Getting someone out of the cloner now leaves damage, which can only be fixed in the cryo tube.
                                                                                                        • New reagent: Clonexadone, for use with the cryo tube.
                                                                                                        • Fixed using syringes on plants.
                                                                                                        • @@ -1931,7 +1976,7 @@ resistance (only slight don't run into a fire).
                                                                                                        -6 March 2011 +6 March 2011
                                                                                                        • Neo updated:
                                                                                                            @@ -1957,7 +2002,7 @@ resistance (only slight don't run into a fire).
                                                                                                          -2 March 2011, Wednesday +2 March 2011, Wednesday
                                                                                                          • Errorage updated:
                                                                                                              @@ -1985,12 +2030,12 @@ resistance (only slight don't run into a fire).
                                                                                                            • Darem updated:
                                                                                                                -
                                                                                                              • R&D minor bugfixes.
                                                                                                              • +
                                                                                                              • R&D minor bugfixes.
                                                                                                              • AI computer can now be deconstructed (right click and select 'accessinternals').
                                                                                                              • -
                                                                                                              • Server room updated, added server equipment to use with R&D.
                                                                                                              • +
                                                                                                              • Server room updated, added server equipment to use with R&D.
                                                                                                              • Wizard and ghost teleport lists are now in alphabetical order, ghosts can now teleport to the mining station.
                                                                                                              • Rightclicking and examining a constructable frame now tells you what parts still need to be finished.
                                                                                                              • -
                                                                                                              • Large grenades added to R&D.
                                                                                                              • +
                                                                                                              • Large grenades added to R&D.
                                                                                                            • Deeyach updated: @@ -2001,16 +2046,16 @@ resistance (only slight don't run into a fire).
                                                                                                            -24 February 2011, Thursday +24 February 2011, Thursday
                                                                                                            • Darem updated:
                                                                                                              • Lighting code fixed for mining and thermite.
                                                                                                              • -
                                                                                                              • R&D instruction manual added to the R&D lab.
                                                                                                              • -
                                                                                                              • Fixed R&D disk commands not working.
                                                                                                              • +
                                                                                                              • R&D instruction manual added to the R&D lab.
                                                                                                              • +
                                                                                                              • Fixed R&D disk commands not working.
                                                                                                              • Added portable power generators which run on solid plasma.
                                                                                                              • You can now set the numer of coins to produce in the mint.
                                                                                                              • -
                                                                                                              • Added two more portable power generators to R&D.
                                                                                                              • +
                                                                                                              • Added two more portable power generators to R&D.
                                                                                                            • Deeyach updated: @@ -2025,7 +2070,7 @@ resistance (only slight don't run into a fire).
                                                                                                            • Stackable uranium ore added (a better sprite is needed, contributions are welcome)
                                                                                                            • Made Meteor gamemode actually do stuff
                                                                                                            • Made a bigger class of meteor
                                                                                                            • -
                                                                                                            • New R&D item: Advanced Energy Gun
                                                                                                            • +
                                                                                                            • New R&D item: Advanced Energy Gun
                                                                                                            • Law priority clarified with regards to ion laws and law 0.
                                                                                                          • @@ -2048,7 +2093,7 @@ resistance (only slight don't run into a fire).
                                                                                                          -23 February 2011, Red Army Day +23 February 2011, Red Army Day
                                                                                                          • Uhangi updated:
                                                                                                              @@ -2088,7 +2133,7 @@ resistance (only slight don't run into a fire).
                                                                                                            -20 February 2011, Sunday +20 February 2011, Sunday
                                                                                                            • Errorage updated:
                                                                                                                @@ -2110,7 +2155,7 @@ resistance (only slight don't run into a fire).
                                                                                                              • Darem updated:
                                                                                                                  -
                                                                                                                • Mass Spectrometer added to R&D. Load it with a syringe of blood and it will tell you the chemicals in it. Low reliability devices may yield false information.
                                                                                                                • +
                                                                                                                • Mass Spectrometer added to R&D. Load it with a syringe of blood and it will tell you the chemicals in it. Low reliability devices may yield false information.
                                                                                                                • Not all devices have a 100% reliability now.
                                                                                                                • Miners now have access to mint foyer and loading area. Only captain has access to the vault.
                                                                                                                • More stuff can be analyzed in the destructive analyzer, protolathe can produce intelicards.
                                                                                                                • @@ -2126,7 +2171,7 @@ resistance (only slight don't run into a fire).
                                                                                                                -18 February 2011, Friday +18 February 2011, Friday
                                                                                                                • Errorage updated:
                                                                                                                    @@ -2154,13 +2199,13 @@ resistance (only slight don't run into a fire).
                                                                                                                  • Darem updates:
                                                                                                                      -
                                                                                                                    • Research and Development system is LIVE. Scientists can now research new advancements in technology. Not much can be made, right now, but the system is there. Technologies are researched by shoving items into the destructive analyzer. Circuit Imprinter, Destructive Analyzer, and Protolathe are controlled from the R&D console.
                                                                                                                    • +
                                                                                                                    • Research and Development system is LIVE. Scientists can now research new advancements in technology. Not much can be made, right now, but the system is there. Technologies are researched by shoving items into the destructive analyzer. Circuit Imprinter, Destructive Analyzer, and Protolathe are controlled from the R&D console.
                                                                                                                    • Autolathe, Protolathe, Destructive Analyzer, and Circuit Imprinter can now be built, taken apart, and upgraded. The basic frame for all of the above requires 5 metal.
                                                                                                                  -15 February 2011, Tuesday +15 February 2011, Tuesday
                                                                                                                  • Rastaf0 updated:
                                                                                                                      @@ -2184,7 +2229,7 @@ resistance (only slight don't run into a fire).
                                                                                                                    -14 February 2011, Valentine's day +14 February 2011, Valentine's day
                                                                                                                    • Errorage updated:
                                                                                                                        @@ -2243,10 +2288,10 @@ resistance (only slight don't run into a fire).
                                                                                                                        06.02.2011, r979
                                                                                                                        • Jesus christ it's a new map what the fuck -
                                                                                                                        • Just kidding, it's only minor changes to medbay/mechbay/cybernetics/R&D/toxins/robotics/chapel/theatre -
                                                                                                                        • Okay so there's too many changes to list completely, but basically: toxins/R&D/virology/xenobiology are south through medbay; robotics/cybernetics/mechbay are where toxins used to be, the theatre and chapel are above medbay. +
                                                                                                                        • Just kidding, it's only minor changes to medbay/mechbay/cybernetics/R&D/toxins/robotics/chapel/theatre +
                                                                                                                        • Okay so there's too many changes to list completely, but basically: toxins/R&D/virology/xenobiology are south through medbay; robotics/cybernetics/mechbay are where toxins used to be, the theatre and chapel are above medbay.
                                                                                                                        • Theatre is a new place for the Clown and Mime to play, there are some costumes available, a stage and backstage, and seating for the audience. -
                                                                                                                        • R&D and Toxins have been combined together. R&D is still work in progress. You need to head south through medbay to get there. +
                                                                                                                        • R&D and Toxins have been combined together. R&D is still work in progress. You need to head south through medbay to get there.
                                                                                                                        • Medbay has been re-arranged slightly. Honestly, it's nothing, I bet you won't even notice anything different. There's also a new surgery suite, complete with pre-op and post-op rooms.
                                                                                                                        • Virology's been rearranged, but it is mostly in the same place still.
                                                                                                                        • Xenobiology is work in progress. [There's some fun stuff still being coded] @@ -2409,7 +2454,7 @@ resistance (only slight don't run into a fire).
                                                                                                                        • 5-unit pills now work
                                                                                                                        • APCs added and moved
                                                                                                                        • Cola machine added. Contains various flavours of soda. Also added new snacks to the now named snack machine. Water cooler added, just apply an empty glass to it
                                                                                                                        • -
                                                                                                                        • Salt & Pepper have been added, as part of the food overhaul
                                                                                                                        • +
                                                                                                                        • Salt & Pepper have been added, as part of the food overhaul
                                                                                                                        • More bug fixes. There was a lot
                                                                                                                        @@ -2453,7 +2498,7 @@ resistance (only slight don't run into a fire).
                                                                                                                      • Fixed cyborgs pressing Cancel when choosing AIs.
                                                                                                                      • The play MIDIs setting now carries over when ghosting.
                                                                                                                      • Admins can now see if a cyborg is emagged via the player panel.
                                                                                                                      • -
                                                                                                                      • PAPERWORK UPDATE v1: Supply crates contain manifest slips, in a later update these will be returnable for supply points. +
                                                                                                                      • PAPERWORK UPDATE v1: Supply crates contain manifest slips, in a later update these will be returnable for supply points.
                                                                                                                      • The Supply Ordering Console (Request computer in the QM lobby) can now print requisition forms for ordering crates. In conjunction with the rubber stamps, these can be used to demonstrate proper authorisation for supply orders.
                                                                                                                      • Rubber stamps now spawn for each head of staff.
                                                                                                                      • The use of DNA Injectors and fueltank detonations are now admin-logged.
                                                                                                                      • @@ -2573,12 +2618,12 @@ resistance (only slight don't run into a fire).
                                                                                                                      • A new variant freeform module has been added to the AI Upload room.
                                                                                                                      • The changeling's neurotoxic dart has been made more powerful - this will likely be an optional upgrade from a set of choices, akin to wizard spells.
                                                                                                                      • Some gimmick clothes moved to a different object path.
                                                                                                                      • -
                                                                                                                      • The chameleon jumpsuit should now be more useful - it includes job-specific jumpsuits as well as flat colours.
                                                                                                                      • +
                                                                                                                      • The chameleon jumpsuit should now be more useful - it includes job-specific jumpsuits as well as flat colours.
                                                                                                                      Wednesday, September 29, 15:40
                                                                                                                        -
                                                                                                                      • Bartender update! Bartender now has a Booze-O-Mat vending machine dispensing spirits and glasses, which he can use to mix cocktails. Recipes for cocktails are available on the wiki.
                                                                                                                      • +
                                                                                                                      • Bartender update! Bartender now has a Booze-O-Mat vending machine dispensing spirits and glasses, which he can use to mix cocktails. Recipes for cocktails are available on the wiki.
                                                                                                                      • The barman also now has a shotgun hidden under a table in the bar. He spawns with beanbag shells and blanks. Lethal ammo is obtainable from hacked autolathes.
                                                                                                                      • Dead AIs can once more be intelicarded, however in order to be restored to functionality they must be repaired using a machine in the RD office.
                                                                                                                      • Silicon-based lifeforms have metal gibs and motor oil instead of blood.
                                                                                                                      • @@ -3162,7 +3207,7 @@ resistance (only slight don't run into a fire).
                                                                                                                        Friday, July 31, 2009
                                                                                                                          -
                                                                                                                        • I'm really sorry everyone I just HAD to add a gib all verb.
                                                                                                                        • +
                                                                                                                        • I&#39;m really sorry everyone I just HAD to add a gib all verb.
                                                                                                                        • Decided to add the creation of bombs to bombers list
                                                                                                                        • Made the new bombing list EVEN BETTER!!!
                                                                                                                        • Fixed a bug with admin jumping AND the traitor death message
                                                                                                                        • @@ -3182,10 +3227,10 @@ resistance (only slight don't run into a fire).
                                                                                                                        • Added in jump to key coded in a much better way than showtime originally did it.
                                                                                                                        • Fixed magical wind when laying pipes. They start out empty!!
                                                                                                                        • Made blink safer. Fixed the crew-quarters to ai sattelite teleport problem.
                                                                                                                        • -
                                                                                                                        • Forgot the message again. Added an emp spell. thanks copy&paste.
                                                                                                                        • +
                                                                                                                        • Forgot the message again. Added an emp spell. thanks copy&amp;paste.
                                                                                                                        • OH MY GOD I HAVE RUINED ASAY
                                                                                                                        • Added electronic items to the pipe dispenser
                                                                                                                        • -
                                                                                                                        • fixed a formatting error with the changelog (I didn't break it, it was showtime)
                                                                                                                        • +
                                                                                                                        • fixed a formatting error with the changelog (I didn&#39;t break it, it was showtime)
                                                                                                                        • Fixed a formatting error
                                                                                                                        • Cleaned up sandbox object spawn code
                                                                                                                        • New and improved admin log so we can keep an eye on these fuckers
                                                                                                                        • @@ -3212,9 +3257,9 @@ resistance (only slight don't run into a fire). turrets and added a few areas.
                                                                                                                        • Some stuff in here you know the usual shit. Bugfixes, formatting etc.
                                                                                                                        • Stunbaton nerf.
                                                                                                                        • -
                                                                                                                        • Tempban longer than 1 year -> permaban.
                                                                                                                        • -
                                                                                                                        • Turfs > spawnable.
                                                                                                                        • -
                                                                                                                        • Shaking someone now slowly removes paralysis, stuns and the 'weakened' stuff.
                                                                                                                        • +
                                                                                                                        • Tempban longer than 1 year -&gt; permaban.
                                                                                                                        • +
                                                                                                                        • Turfs &gt; spawnable.
                                                                                                                        • +
                                                                                                                        • Shaking someone now slowly removes paralysis, stuns and the &#39;weakened&#39; stuff.
                                                                                                                        • CTF flags now check if someone has them equipped every 20 seconds, if they are not then they delete themselves and respawn.
                                                                                                                        • Fixed the r-wall-welder-message-thing.
                                                                                                                        • @@ -3224,7 +3269,7 @@ resistance (only slight don't run into a fire).
                                                                                                                        • Instead of the red and green team its now the American and Irish teams!
                                                                                                                        • BACKUP BACKUP TELL ME WHAT YOU GONNA DO NOW Changed the monkey name code. Re-did my antimatter engine code so it actually puts out power now
                                                                                                                        • -
                                                                                                                        • dumb as fuck change, whoever did that, it already spawn ()'s inside the proc +
                                                                                                                        • dumb as fuck change, whoever did that, it already spawn ()&#39;s inside the proc code, whoever did that, you are a faggot and should read code before you modify it
                                                                                                                        • Fixed a bug that gave everyone modify ticker variables you silly sausage.
                                                                                                                        • @@ -3314,7 +3359,7 @@ resistance (only slight don't run into a fire).
                                                                                                                        • Unprison verb (again, for admins).
                                                                                                                        -
                                                                                                                        Wed&Thu, April 8&9, 2009
                                                                                                                        +
                                                                                                                        Wed&Thu, April 8&9, 2009
                                                                                                                        • Medical redone, doctors do your jobs! (Tell me what you think of this compared to the old one)
                                                                                                                        • @@ -3322,9 +3367,9 @@ resistance (only slight don't run into a fire).
                                                                                                                        • Only the heads can launch the shuttle early now. Or an emag.
                                                                                                                        -
                                                                                                                        Mon&Tue, April 6&7, 2009
                                                                                                                        +
                                                                                                                        Mon&Tue, April 6&7, 2009
                                                                                                                          -
                                                                                                                        • Sounds. Turn on your speakers & sound downloads.
                                                                                                                        • +
                                                                                                                        • Sounds. Turn on your speakers & sound downloads.
                                                                                                                        • Scan something with blood on it detective.
                                                                                                                        @@ -3588,7 +3633,8 @@ resistance (only slight don't run into a fire). Spriters: Supernorn, Haruhi, Stuntwaffle, Pantaloons, Rho, SynthOrange, I Said No

                                                                                                                        -

                                                                                                                        Creative Commons License
                                                                                                                        Except where otherwise noted, Goon Station 13 is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 License.
                                                                                                                        Rights are currently extended to SomethingAwful Goons only.

                                                                                                                        +

                                                                                                                        Creative Commons License
                                                                                                                        Except where otherwise noted, Goon Station 13 is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 License.
                                                                                                                        Rights are currently extended to SomethingAwful Goons only.

                                                                                                                        +

                                                                                                                        Some icons by Yusuke Kamiyamane. All rights reserved. Licensed under a Creative Commons Attribution 3.0 License.

diff --git a/html/changelog.js b/html/changelog.js new file mode 100644 index 0000000000..00db7fbc70 --- /dev/null +++ b/html/changelog.js @@ -0,0 +1,87 @@ +/* +function dropdowns() { + var divs = document.getElementsByTagName('div'); + var headers = new Array(); + var links = new Array(); + for(var i=0;i=0) { + elem.className = elem.className.replace('visible','hidden'); + this.className = this.className.replace('open','closed'); + } + else { + elem.className = elem.className.replace('hidden','visible'); + this.className = this.className.replace('closed','open'); + } + return false; + } + })(links[i]); + } + } +} +*/ +/* +function filterchanges(type){ + var lists = document.getElementsByTagName('ul'); + for(var i in lists){ + if(lists[i].className && lists[i].className.search('changes')>=0) { + for(var j in lists[i].childNodes){ + if(lists[i].childNodes[j].nodeType == 1){ + if(!type){ + lists[i].childNodes[j].style.display = 'block'; + } + else if(lists[i].childNodes[j].className!=type) { + lists[i].childNodes[j].style.display = 'none'; + } + else { + lists[i].childNodes[j].style.display = 'block'; + } + } + } + } + } +} +*/ +function dropdowns() { + var drops = $('div.drop'); + var indrops = $('div.indrop'); + if(drops.length!=indrops.length){ + alert("Some coder fucked up with dropdowns"); + } + drops.each(function(index){ + $(this).toggleClass('closed'); + $(indrops[index]).hide(); + $(this).click(function(){ + $(this).toggleClass('closed'); + $(this).toggleClass('open'); + $(indrops[index]).toggle(); + }); + }); +} + +function filterchanges(type){ + $('ul.changes li').each(function(){ + if(!type || $(this).hasClass(type)){ + $(this).show(); + } + else { + $(this).hide(); + } + }); +} + +$(document).ready(function(){ + dropdowns(); +}); \ No newline at end of file diff --git a/html/chevron-expand.png b/html/chevron-expand.png new file mode 100644 index 0000000000000000000000000000000000000000..f770e33d8ea4fa62c2b68ba64a0528a727bd86ab GIT binary patch literal 495 zcmVw5Ql%y&X}&!r zVq8+_CGT-^-Z{B>_g>EPJkm-CShof9^h&GN+%QqHlV8Y0Cx^wx3o>jTl=F{uFFbGx zjgK1{UW&Exp>Er@!!nEw3eXVJ`}<3>{OveS69c6bn&1wKBEw)=mQMkws)jI46W;+7 zi^ZS`3^;aO7oN3j{_R6Q+)DYSTi<_8b_qL+{kH8w;~RJ^!?2*xbz^&Jq*zv$vrmE` zuIxRRD*Eo~1Te=@Xaa-h@tS6+s>z6Pew40!I`bR%*nz*r6$+ZbAW0pRMmR2*5l!<1LHb`= zXad7PDt=e6r$(i)KI9(i(D<0ER;!oSrL&v9%2(*X^~A~C^!sc&l}IEwRaF&5K@*w} lDVmM;MWa!!)$#rjU;tr+-re_n@zMYQ002ovPDHLkV1ln3)WHA% literal 0 HcmV?d00001 diff --git a/html/chevron.png b/html/chevron.png new file mode 100644 index 0000000000000000000000000000000000000000..b83135b69084e4f7eefdc200ba017436a4e37004 GIT binary patch literal 498 zcmV(h55GQCebK6Y|x|CB70N zQwkor73*l_ z0Z%Lz1ICYXuyx&VT^EA3Z9f*v+0`5HEN{M4Yn0=7_#DRtPav>u3a>Fu`>9l2Trc!? z3zr8oaIS2<)>OpvBE|%mK;U_tVc5Ff+&lSBC8LMinR;D=6YTxdx*$k|h`CzV21&Roy zY(f*e#Dg&b4;Yhm?_9`U{0&~@e`q|YcW&OQ33ubhjWOB1?7<}v*aVCyO0geo`Djab zc()KYd-BQKWMO<`vzp3nbN;jUb+@9(EmsmWwA9F5@ojfcbGpySl` z_8@BlX*}>5?RM?xNZ@%zQI<-j{tJMsYg#fItsWi%%@s5yDL@cCSzeYTa6g=#=?Gwe zE1sTen)b%Bn&@`=hV$+1CBt~^bh_Q{=X!lO9IC2n7=~@z9*^fdlks}J(O8U1r$3#X zOe?6jw-&+z%a%Brv)@)% zNrYUZ0fG@t1I-mI7YceP+A2~C(!}pS`b1M)#UlLV$qKl#GSO5&+8cW{oo+jYQ5|C1C|9rjU+X{znM&C zibZj@8q+yILuFZpAv`}k{JOk+zPZuv@8K>Giv?F!Qk$D^7h%659LK?vrUKX>1HnRx l{|7XhWm$${V2*zT7yzst5om9tZXW;u002ovPDHLkV1hc-D!%{# literal 0 HcmV?d00001 diff --git a/html/hard-hat-exclamation.png b/html/hard-hat-exclamation.png new file mode 100644 index 0000000000000000000000000000000000000000..e22eb61b8feca1cf7bf503c096b52f2d91db2dfa GIT binary patch literal 678 zcmV;X0$KfuP)QBe>?t70i7Hj$acJSLfB zCiCpPt~W6R1rhu>9M1jD`3~pYdja|<`tow^!&U5O3lz>=j%Ie+it; zdx6)aPn{!ph)e~k&B*Ex%y#nN+2XZleDc7c^#Y+_Dsbctdr*rNZXoi!XK=2rW9zpY zfXqg|Q7)Hlv+3C#O?f>PsGnEJBpF(x(6*d@&+d(_-DxwzVr%&R)yvyGcPEUwU8#a+ z9}6_O3fygbt2FxZaNpumS`^77PjEs+wHT;gy8K{{HaJdqt?E#DH(uJ*O=zp0^t4GHo@Au z%`o=~2rYvl(0r zj4%vw4tK&DEH(^7*LBbH7={r9f#-P$Aui=O4tK#ZF&^uG@Kb;R0IU0`>)kn)qyPW_ M07*qoM6N<$f{0Wrr~m)} literal 0 HcmV?d00001 diff --git a/html/image-minus.png b/html/image-minus.png new file mode 100644 index 0000000000000000000000000000000000000000..b2bac2c45abb9744337ed7875e073a7ab13e6f3e GIT binary patch literal 535 zcmV+y0_gpTP)fA(AFVtVFm+&NkxfCvk zfEdE8k`h-5|2Ey8ig|+no|%9NVakdjbRU>Lr8M=3AS$pgDe~l&v^< zf8TZQLvQKj)7v|nySrq4YwP&rSQJHM-0{8^ ZU;s%i^Y`u|7f}EJ002ovPDHLkV1kM<_?`d& literal 0 HcmV?d00001 diff --git a/html/image-plus.png b/html/image-plus.png new file mode 100644 index 0000000000000000000000000000000000000000..308c1ae0a2866bd643906ae9ab1279e354ebb85b GIT binary patch literal 580 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 Y7EsfTOsfF!JwA}<^6GNmVP+x!3&Q4HZvX%Q literal 0 HcmV?d00001 diff --git a/icons/misc/mech_fab.dmi b/icons/mecha/mech_fab.dmi similarity index 100% rename from icons/misc/mech_fab.dmi rename to icons/mecha/mech_fab.dmi diff --git a/icons/mob/mecha.dmi b/icons/mecha/mecha.dmi similarity index 100% rename from icons/mob/mecha.dmi rename to icons/mecha/mecha.dmi diff --git a/icons/misc/mecha_mouse.dmi b/icons/mecha/mecha_mouse.dmi similarity index 100% rename from icons/misc/mecha_mouse.dmi rename to icons/mecha/mecha_mouse.dmi diff --git a/icons/mecha/ripley_construct.dmi b/icons/mecha/ripley_construct.dmi new file mode 100644 index 0000000000000000000000000000000000000000..7aad29c6149d4a3a0528d63a6a0bc16c05d35005 GIT binary patch literal 2296 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