Merge pull request #506 from Markolie/master

Re-add Dave's changes, remote view/remote talk nerf
This commit is contained in:
Fox-McCloud
2014-11-20 18:21:08 -05:00
15 changed files with 377 additions and 92 deletions
+19 -5
View File
@@ -221,14 +221,20 @@ Obviously, requires DNA2.
/obj/effect/proc_holder/spell/wizard/targeted/remotetalk/choose_targets(mob/user = usr)
var/list/targets = new /list()
targets += input("Choose the target to talk to.", "Targeting") as mob in living_mob_list
var/list/validtargets = new /list()
for(var/mob/M in view(usr))
validtargets += M
if(!validtargets.len || validtargets.len == 1)
usr << "<span class='warning'>There are no valid targets in range!</span>"
start_recharge()
return
targets += input("Choose the target to talk to.", "Targeting") as mob in validtargets
perform(targets)
/obj/effect/proc_holder/spell/wizard/targeted/remotetalk/cast(list/targets)
if(!ishuman(usr)) return
var/say = input ("What do you wish to say")
var/say = input("What do you wish to say")
for(var/mob/living/target in targets)
if(M_REMOTE_TALK in target.mutations)
@@ -267,8 +273,16 @@ Obviously, requires DNA2.
icon_power_button = "genetic_view"
/obj/effect/proc_holder/spell/wizard/targeted/remoteview/choose_targets(mob/user = usr)
var/list/targets = new /list()
targets += input("Choose the target to spy on.", "Targeting") as mob in living_mob_list
var/list/targets = living_mob_list
var/list/remoteviewers = new /list()
for(var/mob/M in targets)
if(M_REMOTE_VIEW in M.mutations)
remoteviewers += M
if(!remoteviewers.len || remoteviewers.len == 1)
usr << "<span class='warning'>No valid targets with remote view were found!</span>"
start_recharge()
return
targets += input("Choose the target to spy on.", "Targeting") as mob in remoteviewers
perform(targets)
+5
View File
@@ -36,6 +36,7 @@
var/siemens_coefficient = 1 // for electrical admittance/conductance (electrocution checks and shit)
var/slowdown = 0 // How much clothing is slowing you down. Negative values speeds you up
var/canremove = 1 //Mostly for Ninja code at this point but basically will not allow the item to be removed if set to 0. /N
var/reflect_chance = 0 //This var dictates what % of a time an object will reflect an energy based weapon's shot
var/armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
var/list/allowed = null //suit storage stuff.
var/obj/item/device/uplink/hidden/hidden_uplink = null // All items can have an uplink hidden inside, just remember to add the triggers.
@@ -557,6 +558,10 @@
/obj/item/proc/IsShield()
return 0
/obj/item/proc/IsReflect(var/def_zone) //This proc determines if and at what% an object will reflect energy projectiles if it's in l_hand,r_hand or wear_suit
if(prob(reflect_chance))
return 1
/obj/item/proc/get_loc_turf()
var/atom/L = loc
while(L && !istype(L, /turf/))
@@ -30,10 +30,13 @@
return (BRUTELOSS|FIRELOSS)
/obj/item/weapon/melee/energy/sword
var/hacked = 0
var/blade_color
color
name = "energy sword"
desc = "May the force be within you."
icon_state = "sword0"
icon_override = 'icons/mob/in-hand/swords.dmi'
force = 3.0
throwforce = 5.0
throw_speed = 1
@@ -203,6 +203,17 @@
item_state = "Dpacket"
/obj/item/weapon/storage/fancy/cigarettes/syndicate
name = "\improper Syndicate Cigarettes"
desc = "A packet of six evil-looking cigarettes, A label on the packaging reads, \"Donk Co\""
icon_state = "robustpacket"
item_state = "robustpacket"
/obj/item/weapon/storage/fancy/cigarettes/syndicate/New()
..()
var/new_name = pick("evil", "suspicious", "ominous", "donk-flavored", "robust", "sneaky")
name = "[new_name] cigarette packet"
/*
* Vial Box
*/
@@ -24,7 +24,7 @@
return 0
/obj/item/weapon/melee/energy/sword/New()
_color = pick("red","blue","green","purple")
blade_color = pick("red","blue","green","purple")
/obj/item/weapon/melee/energy/sword/attack_self(mob/living/user as mob)
if ((M_CLUMSY in user.mutations) && prob(50))
@@ -36,7 +36,7 @@
if(istype(src,/obj/item/weapon/melee/energy/sword/pirate))
icon_state = "cutlass1"
else
icon_state = "sword[_color]"
icon_state = "sword[blade_color]"
w_class = 4
playsound(user, 'sound/weapons/saberon.ogg', 50, 1)
hitsound = 'sound/weapons/blade1.ogg'
@@ -67,9 +67,29 @@
user.adjustBrainLoss(10)
else
user << "<span class='notice'>You attach the ends of the two energy swords, making a single double-bladed weapon! You're cool.</span>"
new /obj/item/weapon/twohanded/dualsaber(user.loc)
var/obj/item/weapon/twohanded/dualsaber/newSaber = new /obj/item/weapon/twohanded/dualsaber(user.loc)
if(src.hacked) // That's right, we'll only check the "original" esword.
newSaber.hacked = 1
newSaber.blade_color = "rainbow"
del(W)
del(src)
else if(istype(W, /obj/item/device/multitool))
if(hacked == 0)
hacked = 1
blade_color = "rainbow"
user << "<span class='warning'>RNBW_ENGAGE</span>"
if(active)
icon_state = "swordrainbow"
// Updating overlays, copied from welder code.
// I tried calling attack_self twice, which looked cool, except it somehow didn't update the overlays!!
if(user.r_hand == src)
user.update_inv_r_hand(0)
else if(user.l_hand == src)
user.update_inv_l_hand(0)
else
user << "<span class='warning'>It's already fabulous!</span>"
/*
* Classic Baton
*/
@@ -139,31 +159,34 @@
slot_flags = SLOT_BELT
w_class = 2
force = 3
var/cooldown = 0
var/on = 0
/obj/item/weapon/melee/telebaton/attack_self(mob/user as mob)
on = !on
if(on)
user << "<span class ='warning'>You extend the baton.</span>"
user.visible_message("\red With a flick of their wrist, [user] extends their telescopic baton.",\
"\red You extend the baton.",\
"You hear an ominous click.")
icon_state = "telebaton_1"
item_state = "nullrod"
w_class = 4 //doesnt fit in backpack when its on for balance
force = 10 //seclite damage
attack_verb = list("smacked", "struck", "cracked", "beaten")
item_state = "telebaton_1"
w_class = 3
force = 15//quite robust
attack_verb = list("smacked", "struck", "slapped")
else
user << "<span class ='notice'>You collapse the baton.</span>"
user.visible_message("\blue [user] collapses their telescopic baton.",\
"\blue You collapse the baton.",\
"You hear a click.")
icon_state = "telebaton_0"
item_state = "telebaton_0" //no sprite in other words
slot_flags = SLOT_BELT
item_state = "telebaton_0"
w_class = 2
force = 3 //not so robust now
attack_verb = list("hit", "poked")
force = 3//not so robust now
attack_verb = list("hit", "punched")
if(istype(user,/mob/living/carbon/human))
var/mob/living/carbon/human/H = user
H.update_inv_l_hand()
H.update_inv_r_hand()
playsound(src.loc, 'sound/weapons/batonextend.ogg', 50, 1)
playsound(src.loc, 'sound/weapons/empty.ogg', 50, 1)
add_fingerprint(user)
if (!blood_DNA) return
if(blood_overlay && (blood_DNA.len >= 1)) //updates blood overlay, if any
@@ -180,9 +203,8 @@
/obj/item/weapon/melee/telebaton/attack(mob/target as mob, mob/living/user as mob)
if(on)
add_fingerprint(user)
if((M_CLUMSY in user.mutations) && prob(50))
user << "<span class ='danger'>You club yourself over the head.</span>"
if ((M_CLUMSY in user.mutations) && prob(50))
user << "\red You club yourself over the head."
user.Weaken(3 * force)
if(ishuman(user))
var/mob/living/carbon/human/H = user
@@ -190,28 +212,23 @@
else
user.take_organ_damage(2*force)
return
if(isrobot(target))
..()
return
if(!isliving(target))
return
if (user.a_intent == "harm")
if(!..()) return
if(!isrobot(target)) return
if(!isrobot(target))
playsound(src.loc, "swing_hit", 50, 1, -1)
target.Weaken(4)
else
if(cooldown <= 0)
playsound(get_turf(src), 'sound/effects/woodhit.ogg', 75, 1, -1)
target.Weaken(3)
add_logs(user, target, "stunned", object="telescopic baton")
src.add_fingerprint(user)
target.visible_message("<span class ='danger'>[target] has been knocked down with \the [src] by [user]!</span>")
if(!iscarbon(user))
target.LAssailant = null
else
target.LAssailant = user
cooldown = 1
spawn(40)
cooldown = 0
playsound(src.loc, 'sound/weapons/Genhit.ogg', 50, 1, -1)
target.Weaken(2)
target.attack_log += text("\[[time_stamp()]\] <font color='orange'>Has been attacked with [src.name] by [user.name] ([user.ckey])</font>")
user.attack_log += text("\[[time_stamp()]\] <font color='red'>Used the [src.name] to attack [target.name] ([target.ckey])</font>")
log_attack("<font color='red'>[user.name] ([user.ckey]) attacked [target.name] ([target.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)])</font>")
src.add_fingerprint(user)
target.visible_message("\red <B>[target] has been stunned with \the [src] by [user]!</B>")
if(!iscarbon(user))
target.LAssailant = null
else
target.LAssailant = user
return
else
return ..()
@@ -282,6 +299,7 @@
active = !active
if (active)
force = 10
reflect_chance = 80
icon_state = "eshield[active]"
w_class = 4
playsound(user, 'sound/weapons/saberon.ogg', 50, 1)
@@ -290,6 +308,7 @@
force = 3
icon_state = "eshield[active]"
w_class = 1
reflect_chance = 0
playsound(user, 'sound/weapons/saberoff.ogg', 50, 1)
user << "\blue [src] can now be concealed."
if(istype(user,/mob/living/carbon/human))
+225 -11
View File
@@ -191,6 +191,9 @@ obj/item/weapon/twohanded/
* Double-Bladed Energy Swords - Cheridan
*/
/obj/item/weapon/twohanded/dualsaber
var/hacked = 0
var/blade_color
icon_override = 'icons/mob/in-hand/swords.dmi'
icon_state = "dualsaber0"
name = "double-bladed energy sword"
desc = "Handle with care."
@@ -210,20 +213,16 @@ obj/item/weapon/twohanded/
edge = 1
no_embed = 1 // Like with the single-handed esword, this shouldn't be embedding in people.
/* Here for when we can add items to left and right hands again, but currently this cannot be done due to the lack of in-hand icons for dual eswords aside from the green one.
/obj/item/weapon/twohanded/dualsaber/New()
item_color = pick("red", "blue", "green", "purple")
blade_color = pick("red", "blue", "green", "purple")
/obj/item/weapon/twohanded/dualsaber/update_icon()
if(wielded)
icon_state = "dualsaber[item_color][wielded]"
icon_state = "dualsaber[blade_color][wielded]"
reflect_chance = 80
else
icon_state = "dualsaber0"
*/
/obj/item/weapon/twohanded/dualsaber/update_icon()
icon_state = "dualsaber[wielded]"
return
reflect_chance = 0
/obj/item/weapon/twohanded/dualsaber/attack(target as mob, mob/living/user as mob)
..()
@@ -245,11 +244,19 @@ obj/item/weapon/twohanded/
/obj/item/weapon/twohanded/dualsaber/green
New()
color = "green"
blade_color = "green"
/obj/item/weapon/twohanded/dualsaber/red
New()
color = "red"
blade_color = "red"
/obj/item/weapon/twohanded/dualsaber/purple
New()
blade_color = "purple"
/obj/item/weapon/twohanded/dualsaber/blue
New()
blade_color = "blue"
/obj/item/weapon/twohanded/dualsaber/unwield()
..()
@@ -259,6 +266,18 @@ obj/item/weapon/twohanded/
..()
hitsound = 'sound/weapons/blade1.ogg'
/obj/item/weapon/twohanded/dualsaber/attackby(obj/item/weapon/W as obj, mob/user as mob)
..()
if(istype(W, /obj/item/device/multitool))
if(hacked == 0)
hacked = 1
user << "<span class='warning'>2XRNBW_ENGAGE</span>"
blade_color = "rainbow"
update_icon()
else
user << "<span class='warning'>It's starting to look like a triple rainbow - no, nevermind.</span>"
//spears
/obj/item/weapon/twohanded/spear
icon_state = "spearglass0"
@@ -284,4 +303,199 @@ obj/item/weapon/twohanded/
/obj/item/weapon/twohanded/spear/kidan
icon_state = "kidanspear0"
name = "Kidan spear"
desc = "A spear brought over from the Kidan homeworld."
desc = "A spear brought over from the Kidan homeworld."
// SINGULOHAMMER
/obj/item/weapon/twohanded/singularityhammer
name = "singularity hammer"
desc = "The pinnacle of close combat technology, the hammer harnesses the power of a miniaturized singularity to deal crushing blows."
icon_override = 'icons/mob/in-hand/swords.dmi'
icon_state = "mjollnir0"
flags = CONDUCT
slot_flags = SLOT_BACK
no_embed = 1
force = 5
force_unwielded = 5
force_wielded = 20
throwforce = 15
throw_range = 1
w_class = 5
var/charged = 5
origin_tech = "combat=5;bluespace=4"
/obj/item/weapon/twohanded/singularityhammer/New()
..()
processing_objects.Add(src)
/obj/item/weapon/twohanded/singularityhammer/Destroy()
processing_objects.Remove(src)
..()
/obj/item/weapon/twohanded/singularityhammer/process()
if(charged < 5)
charged++
return
/obj/item/weapon/twohanded/singularityhammer/update_icon() //Currently only here to fuck with the on-mob icons.
icon_state = "mjollnir[wielded]"
return
/obj/item/weapon/twohanded/singularityhammer/proc/vortex(var/turf/pull as turf, mob/wielder as mob)
for(var/atom/X in orange(5,pull))
if(istype(X, /atom/movable))
if(X == wielder) continue
if((X) &&(!X:anchored) && (!istype(X,/mob/living/carbon/human)))
step_towards(X,pull)
step_towards(X,pull)
step_towards(X,pull)
else if(istype(X,/mob/living/carbon/human))
var/mob/living/carbon/human/H = X
if(istype(H.shoes,/obj/item/clothing/shoes/magboots))
var/obj/item/clothing/shoes/magboots/M = H.shoes
if(M.magpulse)
continue
H.apply_effect(1, WEAKEN, 0)
step_towards(H,pull)
step_towards(H,pull)
step_towards(H,pull)
return
/obj/item/weapon/twohanded/singularityhammer/afterattack(atom/A as mob|obj|turf|area, mob/user as mob, proximity)
if(!proximity) return
if(wielded)
if(charged == 5)
charged = 0
if(istype(A, /mob/living/))
var/mob/living/Z = A
Z.take_organ_damage(20,0)
playsound(user, 'sound/weapons/marauder.ogg', 50, 1)
var/turf/target = get_turf(A)
vortex(target,user)
/obj/item/weapon/twohanded/mjollnir
name = "Mjollnir"
desc = "A weapon worthy of a god, able to strike with the force of a lightning bolt. It crackles with barely contained energy."
icon_override = 'icons/mob/in-hand/swords.dmi'
icon_state = "mjollnir0"
flags = CONDUCT
slot_flags = SLOT_BACK
no_embed = 1
force = 5
force_unwielded = 5
force_wielded = 20
throwforce = 30
throw_range = 7
w_class = 5
//var/charged = 5
origin_tech = "combat=5;powerstorage=5"
/obj/item/weapon/twohanded/mjollnir/proc/shock(mob/living/target as mob)
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread()
s.set_up(5, 1, target.loc)
s.start()
target.take_organ_damage(0,30)
target.visible_message("<span class='danger'>[target.name] was shocked by the [src.name]!</span>", \
"<span class='userdanger'>You feel a powerful shock course through your body sending you flying!</span>", \
"<span class='danger'>You hear a heavy electrical crack.</span>")
var/atom/throw_target = get_edge_target_turf(target, get_dir(src, get_step_away(target, src)))
target.throw_at(throw_target, 200, 4)
return
/obj/item/weapon/twohanded/mjollnir/attack(mob/M as mob, mob/user as mob)
..()
spawn(0)
if(wielded)
//if(charged == 5)
//charged = 0
playsound(src.loc, "sparks", 50, 1)
if(istype(M, /mob/living))
M.Stun(10)
shock(M)
/obj/item/weapon/twohanded/mjollnir/update_icon() //Currently only here to fuck with the on-mob icons.
icon_state = "mjollnir[wielded]"
return
/obj/item/weapon/twohanded/knighthammer
name = "singuloth knight's hammer"
desc = "A hammer made of sturdy metal with a golden skull adorned with wings on either side of the head. <br>This weapon causes devastating damage to those it hits due to a power field sustained by a mini-singularity inside of the hammer."
icon_override = 'icons/mob/in-hand/swords.dmi'
icon_state = "adrhammer0"
flags = CONDUCT
slot_flags = SLOT_BACK
no_embed = 1
force = 5
force_unwielded = 5
force_wielded = 20
throwforce = 15
throw_range = 1
w_class = 5
var/charged = 5
origin_tech = "combat=5;bluespace=4"
/obj/item/weapon/twohanded/knighthammer/New()
..()
processing_objects.Add(src)
/obj/item/weapon/twohanded/knighthammer/Destroy()
processing_objects.Remove(src)
..()
/obj/item/weapon/twohanded/knighthammer/process()
if(charged < 5)
charged++
return
/obj/item/weapon/twohanded/knighthammer/update_icon() //Currently only here to fuck with the on-mob icons.
icon_state = "adrhammer[wielded]"
return
/obj/item/weapon/twohanded/knighthammer/afterattack(atom/A as mob|obj|turf|area, mob/user as mob, proximity)
if(!proximity) return
if(wielded)
if(charged == 5)
charged = 0
if(istype(A, /mob/living/))
var/mob/living/Z = A
if(Z.health < 1)
Z.visible_message("<span class='danger'>[Z.name] was blown to peices by the power of [src.name]!</span>", \
"<span class='userdanger'>You feel a powerful blow rip you apart!</span>", \
"<span class='danger'>You hear a heavy impact and the sound of ripping flesh!.</span>")
Z.gib()
else
Z.take_organ_damage(0,30)
Z.visible_message("<span class='danger'>[Z.name] was sent flying by a blow from the [src.name]!</span>", \
"<span class='userdanger'>You feel a powerful blow connect with your body and send you flying!</span>", \
"<span class='danger'>You hear something heavy impact flesh!.</span>")
var/atom/throw_target = get_edge_target_turf(Z, get_dir(src, get_step_away(Z, src)))
Z.throw_at(throw_target, 200, 4)
else if(istype(A, /turf/simulated/wall))
var/turf/simulated/wall/Z = A
Z.ex_act(2)
charged = 3
else if (istype(A, /obj/structure) || istype(A, /obj/mecha/))
var/obj/Z = A
Z.ex_act(2)
charged = 3
playsound(user, 'sound/weapons/marauder.ogg', 50, 1)
+8
View File
@@ -60,9 +60,17 @@
icon_state = "armor_reflec"
item_state = "armor_reflec"
blood_overlay_type = "armor"
reflect_chance = 40
armor = list(melee = 10, bullet = 10, laser = 80, energy = 50, bomb = 0, bio = 0, rad = 0)
siemens_coefficient = 0
/obj/item/clothing/suit/armor/laserproof/IsReflect(var/def_zone)
var/hit_reflect_chance = reflect_chance
if(!(def_zone in list("chest", "groin"))) //If not shot where ablative is covering you, you don't get the reflection bonus!
hit_reflect_chance = 0
if (prob(hit_reflect_chance))
return 1
/obj/item/clothing/suit/armor/swat
name = "swat suit"
desc = "A heavily armored suit that protects against moderate damage. Used in special operations."
@@ -12,35 +12,31 @@ emp_act
var/datum/organ/external/organ = get_organ(check_zone(def_zone))
if(istype(P, /obj/item/projectile/energy) || istype(P, /obj/item/projectile/beam))
if(check_reflect(def_zone)) // Checks if you've passed a reflection% check
visible_message("<span class='danger'>The [P.name] gets reflected by [src]!</span>", \
"<span class='userdanger'>The [P.name] gets reflected by [src]!</span>")
// Find a turf near or on the original location to bounce to
if(P.starting)
var/new_x = P.starting.x + pick(0, 0, 0, 0, 0, -1, 1, -2, 2)
var/new_y = P.starting.y + pick(0, 0, 0, 0, 0, -1, 1, -2, 2)
var/turf/curloc = get_turf(src)
// redirect the projectile
P.original = locate(new_x, new_y, P.z)
P.starting = curloc
P.current = curloc
P.firer = src
P.yo = new_y - curloc.y
P.xo = new_x - curloc.x
return -1 // complete projectile permutation
//Shields
if(check_shields(P.damage, "the [P.name]"))
P.on_hit(src, 2, def_zone)
return 2
//Laserproof armour
if(wear_suit && istype(wear_suit, /obj/item/clothing/suit/armor/laserproof))
if(istype(P, /obj/item/projectile/energy) || istype(P, /obj/item/projectile/beam))
var/reflectchance = 40 - round(P.damage/3)
if(!(def_zone in list("chest", "groin")))
reflectchance /= 2
if(prob(reflectchance))
visible_message("\red <B>The [P.name] gets reflected by [src]'s [wear_suit.name]!</B>")
// Find a turf near or on the original location to bounce to
if(P.starting)
var/new_x = P.starting.x + pick(0, 0, 0, 0, 0, -1, 1, -2, 2)
var/new_y = P.starting.y + pick(0, 0, 0, 0, 0, -1, 1, -2, 2)
var/turf/curloc = get_turf(src)
// redirect the projectile
P.original = locate(new_x, new_y, P.z)
P.starting = curloc
P.current = curloc
P.firer = src
P.yo = new_y - curloc.y
P.xo = new_x - curloc.x
return -1 // complete projectile permutation
//Shrapnel
if (P.damage_type == BRUTE)
@@ -138,6 +134,20 @@ emp_act
return 1
return 0
/mob/living/carbon/human/proc/check_reflect(var/def_zone) //Reflection checks for anything in your l_hand, r_hand, or wear_suit based on reflect_chance var of the object
if(wear_suit && istype(wear_suit, /obj/item/))
var/obj/item/I = wear_suit
if(I.IsReflect(def_zone) == 1)
return 1
if(l_hand && istype(l_hand, /obj/item/))
var/obj/item/I = l_hand
if(I.IsReflect(def_zone) == 1)
return 1
if(r_hand && istype(r_hand, /obj/item/))
var/obj/item/I = r_hand
if(I.IsReflect(def_zone) == 1)
return 1
return 0
/mob/living/carbon/human/proc/check_shields(var/damage = 0, var/attack_text = "the attack")
if(l_hand && istype(l_hand, /obj/item/weapon))//Current base is the prob(50-d/3)
@@ -118,7 +118,8 @@
name = "\improper Bulldog shotgun"
desc = "A compact, mag-fed semi-automatic shotgun for combat in narrow corridors. Compatible only with specialized magazines."
icon_state = "bulldog"
item_state = "c20r"
item_state = "bulldog"
icon_override = 'icons/mob/in-hand/guns.dmi'
w_class = 3.0
origin_tech = "combat=5;materials=4;syndicate=6"
mag_type = "/obj/item/ammo_box/magazine/m12g"
Binary file not shown.

After

Width:  |  Height:  |  Size: 595 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 KiB

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 70 KiB

After

Width:  |  Height:  |  Size: 71 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

After

Width:  |  Height:  |  Size: 35 KiB

+14 -14
View File
@@ -1,31 +1,31 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<head>
<script type='text/javascript'>
function receiveUpdateData(jsonString)
{
// We need both jQuery and NanoUpdate to be able to recieve data
// We need both jQuery and NanoStateManager to be able to recieve data
// At the moment any data received before those libraries are loaded will be lost
if (typeof NanoUpdate != 'undefined' && typeof jQuery != 'undefined')
if (typeof NanoStateManager != 'undefined' && typeof jQuery != 'undefined')
{
NanoUpdate.receiveUpdateData(jsonString);
NanoStateManager.receiveUpdateData(jsonString);
}
}
</script>
<script type='text/javascript' src='libraries.min.js'></script> <script type='text/javascript' src='nano_config.js'></script> <script type='text/javascript' src='nano_update.js'></script> <script type='text/javascript' src='nano_base_helpers.js'></script> <link rel='stylesheet' type='text/css' href='shared.css'> <link rel='stylesheet' type='text/css' href='icons.css'>
<script type='text/javascript' src='libraries.min.js'></script> <script type='text/javascript' src='nano_utility.js'></script> <script type='text/javascript' src='nano_template.js'></script> <script type='text/javascript' src='nano_state_manager.js'></script> <script type='text/javascript' src='nano_state.js'></script> <script type='text/javascript' src='nano_state_default.js'></script> <script type='text/javascript' src='nano_base_callbacks.js'></script> <script type='text/javascript' src='nano_base_helpers.js'></script> <link rel='stylesheet' type='text/css' href='shared.css'> <link rel='stylesheet' type='text/css' href='icons.css'> <link rel='stylesheet' type='text/css' href='layout_default.css'>
</head>
<body scroll=auto data-url-parameters='{"src":"[0x21013192]"}' data-template-data='{"main":"smes.tmpl"}' data-initial-data='{"nameTag":null,"storedCapacity":17.30000114440918,"charging":0,"chargeMode":0,"chargeLevel":50000,"chargeMax":200000,"outputOnline":1,"outputLevel":50000,"outputMax":200000,"outputLoad":7101,"ui":{"status":2,"user":{"name":"Captain"}}}'>
<div id='uiWrapper'>
<div id='uiTitleWrapper'><div id='uiStatusIcon' class='icon24 uiStatusGood'></div><div id='uiTitle'>SMES Power Storage Unit</div><div id='uiTitleFluff'></div></div>
<div id='uiContent'>
<noscript><div id='uiNoJavaScript'>Your browser does not have JavaScript enabled. Please enable JavaScript, then restart SS13.</div></noscript>
<div id='mainTemplate'></div>
</div>
<body scroll=auto data-template-data='{"main":"dna_modifier.tmpl","layout":"layout_default.tmpl"}' data-url-parameters='{"src":"[0x2100a837]"}' data-initial-data='{"config":{"title":"DNA Modifier Console","srcObject":{"name":"DNA Modifier Access Console"},"stateKey":"default","status":2,"autoUpdateLayout":0,"autoUpdateContent":1,"showMap":0,"mapZLevel":1,"user":{"name":"unknown"}},"data":{"selectedMenuKey":null,"locked":0,"hasOccupant":0,"isInjectorReady":1,"hasDisk":0,"disk":{"data":null,"owner":null,"label":null,"type":null,"ue":null},"buffers":[{"data":null,"owner":null,"label":null,"type":null,"ue":0},{"data":null,"owner":null,"label":null,"type":null,"ue":0},{"data":null,"owner":null,"label":null,"type":null,"ue":0}],"radiationIntensity":1,"radiationDuration":2,"irradiating":0,"dnaBlockSize":3,"selectedUIBlock":1,"selectedUISubBlock":1,"selectedSEBlock":1,"selectedSESubBlock":1,"selectedUITarget":1,"selectedUITargetHex":1,"occupant":{"name":null,"stat":null,"isViableSubject":null,"health":null,"maxHealth":null,"minHealth":null,"uniqueEnzymes":null,"uniqueIdentity":null,"structuralEnzymes":null,"radiationLevel":null},"isBeakerLoaded":0,"beakerLabel":null,"beakerVolume":0}}'>
<div id='uiLayout'>
</div>
<noscript>
<div id='uiNoScript'>
<h2>JAVASCRIPT REQUIRED</h2>
<p>Your Internet Explorer's Javascript is disabled (or broken).<br/>
Enable Javascript and then open this UI again.</p>
</div>
</noscript>
</body>
</html>