// Function from file: absorb.dm public override bool can_sting(Mob user = null, Ent_Static target = null) { Changeling changeling = null; dynamic G = null; Mob_Living_Carbon target2 = null; if (!base.can_sting(user, target)) { return(false); } changeling = user.mind.changeling; if (changeling.isabsorbing) { user.WriteMsg("<span class='warning'>We are already absorbing!</span>"); return(false); } G = user.get_active_hand(); if (!(G is Obj_Item_Weapon_Grab)) { user.WriteMsg("<span class='warning'>We must be grabbing a creature in our active hand to absorb them!</span>"); return(false); } if (Convert.ToDouble(G.state) <= 3) { user.WriteMsg("<span class='warning'>We must have a tighter grip to absorb this creature!</span>"); return(false); } target2 = G.affecting; return(changeling.can_absorb_dna(user, target2)); }
// Function from file: mimic_voice.dm public override dynamic sting_action(Mob user = null, Ent_Static target = null) { Changeling changeling = null; string mimic_voice = null; changeling = user.mind.changeling; if (Lang13.Bool(changeling.mimicing)) { changeling.mimicing = ""; changeling.chem_recharge_slowdown -= 0.5; user.WriteMsg("<span class='notice'>We return our vocal glands to their original position.</span>"); return(null); } mimic_voice = GlobalFuncs.stripped_input(user, "Enter a name to mimic.", "Mimic Voice", null, 26); if (!Lang13.Bool(mimic_voice)) { return(null); } changeling.mimicing = mimic_voice; changeling.chem_recharge_slowdown += 0.5; user.WriteMsg("<span class='notice'>We shape our glands to take the voice of <b>" + mimic_voice + "</b>, this will slow down regenerating chemicals while active.</span>"); user.WriteMsg("<span class='notice'>Use this power again to return to our original voice and return chemical production to normal levels.</span>"); GlobalFuncs.feedback_add_details("changeling_powers", "MV"); return(null); }
// Function from file: tiny_prick.dm public override bool Click(dynamic loc = null, string control = null, string _params = null) { Mob user = null; Changeling changeling = null; user = Task13.User; changeling = user.mind.changeling; if (changeling.chosen_sting != null) { this.unset_sting(user); return(false); } this.selected_dna = changeling.select_dna("Select the target DNA: ", "Target DNA"); if (!(this.selected_dna != null)) { return(false); } if (this.selected_dna.dna.species.specflags.Contains(16384)) { user.WriteMsg("<span class = 'notice'>That DNA is not compatible with changeling retrovirus!"); return(false); } base.Click((object)(loc), control, _params); return(false); }
// Function from file: tgstation.dme public override void on_purchase(Mob user = null) { Changeling changeling = null; base.on_purchase(user); changeling = user.mind.changeling; changeling.chem_storage += 25; changeling.chem_recharge_rate *= 2; return; }
// Function from file: mutations.dm public override dynamic sting_action(Mob user = null, Ent_Static target = null) { Changeling changeling = null; dynamic S = null; changeling = user.mind.changeling; if (!(changeling != null)) { return(null); } S = base.sting_action(user, target); S.remaining_uses = Num13.Floor(changeling.absorbedcount * 3); return(1); }
// Function from file: changeling_power.dm public virtual bool can_sting(Mob user = null, Ent_Static target = null) { Changeling c = null; if (!(user is Mob_Living_Carbon_Human) && !(user is Mob_Living_Carbon_Monkey)) { return(false); } if (this.req_human && !(user is Mob_Living_Carbon_Human)) { user.WriteMsg("<span class='warning'>We cannot do that in this form!</span>"); return(false); } c = user.mind.changeling; if (c.chem_charges < this.chemical_cost) { user.WriteMsg(new Txt("<span class='warning'>We require at least ").item(this.chemical_cost).str(" unit").s().str(" of chemicals to do that!</span>").ToString()); return(false); } if (c.absorbedcount < this.req_dna) { user.WriteMsg(new Txt("<span class='warning'>We require at least ").item(this.req_dna).str(" sample").s().str(" of compatible DNA.</span>").ToString()); return(false); } if (this.req_stat < user.stat) { user.WriteMsg("<span class='warning'>We are incapacitated.</span>"); return(false); } if ((user.status_flags & 8192) != 0 && this.name != "Regenerate") { user.WriteMsg("<span class='warning'>We are incapacitated.</span>"); return(false); } if (c.geneticdamage > this.max_genetic_damage) { user.WriteMsg("<span class='warning'>Our genomes are still reassembling. We need time to recover first.</span>"); return(false); } return(true); }
// Function from file: transform.dm public override dynamic sting_action(Mob user = null, Ent_Static target = null) { Changeling changeling = null; Changelingprofile chosen_prof = null; changeling = user.mind.changeling; chosen_prof = changeling.select_dna("Select the target DNA: ", "Target DNA", user); if (!(chosen_prof != null)) { return(null); } GlobalFuncs.changeling_transform(user, chosen_prof); GlobalFuncs.feedback_add_details("changeling_powers", "TR"); return(1); }
// Function from file: hivemind.dm public override dynamic sting_action(Mob user = null, Ent_Static target = null) { Changeling changeling = null; ByTable names = null; Changelingprofile prof = null; dynamic S = null; Base_Data chosen_prof = null; dynamic downloaded_prof = null; changeling = user.mind.changeling; names = new ByTable(); foreach (dynamic _a in Lang13.Enumerate(GlobalVars.hivemind_bank, typeof(Changelingprofile))) { prof = _a; if (!changeling.stored_profiles.Contains(prof)) { names[prof.name] = prof; } } if (names.len <= 0) { user.WriteMsg("<span class='notice'>There's no new DNA to absorb from the air.</span>"); return(null); } S = Interface13.Input("Select a DNA absorb from the air: ", "Absorb DNA", null, null, names, InputType.Null | InputType.Any); if (!Lang13.Bool(S)) { return(null); } chosen_prof = names[S]; if (!(chosen_prof != null)) { return(null); } downloaded_prof = Lang13.Call(chosen_prof.type); ((dynamic)chosen_prof).copy_profile(downloaded_prof); changeling.add_profile(downloaded_prof); user.WriteMsg("<span class='notice'>We absorb the DNA of " + S + " from the air.</span>"); GlobalFuncs.feedback_add_details("changeling_powers", "HD"); return(1); }
// Function from file: hivemind.dm public override dynamic sting_action(Mob user = null, Ent_Static target = null) { Changeling changeling = null; ByTable names = null; Changelingprofile prof = null; dynamic chosen_name = null; Changelingprofile chosen_dna = null; dynamic uploaded_dna = null; changeling = user.mind.changeling; names = new ByTable(); foreach (dynamic _a in Lang13.Enumerate(changeling.stored_profiles, typeof(Changelingprofile))) { prof = _a; if (!GlobalVars.hivemind_bank.Contains(prof)) { names.Add(prof.name); } } if (names.len <= 0) { user.WriteMsg("<span class='notice'>The airwaves already have all of our DNA.</span>"); return(null); } chosen_name = Interface13.Input("Select a DNA to channel: ", "Channel DNA", null, null, names, InputType.Null | InputType.Any); if (!Lang13.Bool(chosen_name)) { return(null); } chosen_dna = changeling.get_dna(chosen_name); if (!(chosen_dna != null)) { return(null); } uploaded_dna = Lang13.Call(chosen_dna.type); chosen_dna.copy_profile(uploaded_dna); GlobalVars.hivemind_bank.Add(uploaded_dna); user.WriteMsg("<span class='notice'>We channel the DNA of " + chosen_name + " to the air.</span>"); GlobalFuncs.feedback_add_details("changeling_powers", "HU"); return(1); }
// Function from file: changeling_power.dm public virtual void try_to_sting(Mob user = null, Ent_Static target = null) { Changeling c = null; if (!this.can_sting(user, target)) { return; } c = user.mind.changeling; if (Lang13.Bool(this.sting_action(user, target))) { this.sting_feedback(user, target); this.take_chemical_cost(c); } return; }
// Function from file: absorb.dm public override dynamic sting_action(Mob user = null, Ent_Static target = null) { dynamic G = null; Mob_Living target2 = null; Changeling changeling = null; Mob_Dead_Observer ghost = null; G = user.get_active_hand(); target2 = G.affecting; changeling = user.mind.changeling; user.WriteMsg("<span class='notice'>We tighen our grip. We must hold still....</span>"); target2.do_jitter_animation(500); ((Mob_Living)user).do_jitter_animation(500); if (!GlobalFuncs.do_mob(user, target2, 20)) { user.WriteMsg("<span class='warning'>The body swap has been interrupted!</span>"); return(null); } target2.WriteMsg("<span class='userdanger'>" + user + " tightens their grip as a painful sensation invades your body.</span>"); if (!changeling.has_dna(((dynamic)target2).dna)) { changeling.add_new_profile(target2, user); } changeling.remove_profile(user); ghost = target2.ghostize(false); user.mind.transfer_to(target2); if (ghost != null) { ghost.mind.transfer_to(user); if (Lang13.Bool(ghost.key)) { user.key = ghost.key; } } user.Paralyse(2); target2.WriteMsg("<span class='warning'>Our genes cry out as we swap our " + user + " form for " + target2 + ".</span>"); return(null); }
// Function from file: humanform.dm public override dynamic sting_action(Mob user = null, Ent_Static target = null) { Changeling changeling = null; ByTable names = null; Changelingprofile prof = null; dynamic chosen_name = null; Changelingprofile chosen_prof = null; dynamic newmob = null; changeling = user.mind.changeling; names = new ByTable(); foreach (dynamic _a in Lang13.Enumerate(changeling.stored_profiles, typeof(Changelingprofile))) { prof = _a; names.Add("" + prof.name); } chosen_name = Interface13.Input("Select the target DNA: ", "Target DNA", null, null, names, InputType.Null | InputType.Any); if (!Lang13.Bool(chosen_name)) { return(null); } chosen_prof = changeling.get_dna(chosen_name); if (!(chosen_prof != null)) { return(null); } if (!(user != null) || Lang13.Bool(user.notransform)) { return(0); } user.WriteMsg("<span class='notice'>We transform our appearance.</span>"); changeling.purchasedpowers.Remove(this); newmob = ((dynamic)user).humanize(279); GlobalFuncs.changeling_transform(newmob, chosen_prof); GlobalFuncs.feedback_add_details("changeling_powers", "LFT"); return(1); }
// Function from file: evolution_menu.dm public override bool Click(dynamic loc = null, string control = null, string _params = null) { Changeling changeling = null; dynamic dat = null; if (!(Task13.User != null) || !(Task13.User.mind != null) || !(Task13.User.mind.changeling != null)) { return(false); } changeling = Task13.User.mind.changeling; if (!(GlobalVars.sting_paths != null)) { GlobalVars.sting_paths = GlobalFuncs.init_paths(typeof(Obj_Effect_ProcHolder_Changeling)); } dat = this.create_menu(changeling); Interface13.Browse(Task13.User, dat, "window=powers;size=600x700"); return(false); }
// Function from file: hivemind.dm public override bool can_sting(Mob user = null, Ent_Static target = null) { Changeling changeling = null; dynamic first_prof = null; if (!base.can_sting(user, target)) { return(false); } changeling = user.mind.changeling; first_prof = changeling.stored_profiles[1]; if (first_prof.name == user.real_name) { user.WriteMsg("<span class='warning'>We have reached our capacity to store genetic information! We must transform before absorbing more.</span>"); return(false); } return(true); }
// Function from file: mutations.dm public bool check_suit(Mob user = null) { Changeling changeling = null; Mob H = null; dynamic T = null; changeling = user.mind.changeling; if (!(user is Mob_Living_Carbon_Human) || !(changeling != null)) { return(true); } H = user; if (Lang13.Bool(((dynamic)this.suit_type).IsInstanceOfType(((dynamic)H).wear_suit)) || Lang13.Bool(((dynamic)this.helmet_type).IsInstanceOfType(((dynamic)H).head))) { H.visible_message("<span class='warning'>" + H + " casts off their " + this.suit_name_simple + "!</span>", "<span class='warning'>We cast off our " + this.suit_name_simple + (this.genetic_damage > 0 ? ", temporarily weakening our genomes." : ".") + "</span>", "<span class='italics'>You hear the organic matter ripping and tearing!</span>"); GlobalFuncs.qdel(((dynamic)H).wear_suit); GlobalFuncs.qdel(((dynamic)H).head); H.update_inv_wear_suit(); H.update_inv_head(); H.update_hair(); if (this.blood_on_castoff) { T = GlobalFuncs.get_turf(H); if (T is Tile_Simulated) { ((Ent_Static)T).add_blood(H); GlobalFuncs.playsound(H.loc, "sound/effects/splat.ogg", 50, 1); } } changeling.geneticdamage += this.genetic_damage; changeling.chem_recharge_slowdown -= this.recharge_slowdown; return(true); } return(false); }
// Function from file: hivemind.dm public override void on_purchase(Mob user = null) { Changeling changeling = null; Obj_Effect_ProcHolder_Changeling_HivemindUpload S1 = null; Obj_Effect_ProcHolder_Changeling_HivemindDownload S2 = null; base.on_purchase(user); changeling = user.mind.changeling; changeling.changeling_speak = true; user.WriteMsg("<i><font color=#800080>Use say \":g message\" to communicate with the other changelings.</font></i>"); S1 = new Obj_Effect_ProcHolder_Changeling_HivemindUpload(); if (!changeling.has_sting(S1)) { changeling.purchasedpowers.Add(S1); } S2 = new Obj_Effect_ProcHolder_Changeling_HivemindDownload(); if (!changeling.has_sting(S2)) { changeling.purchasedpowers.Add(S2); } return; }
// Function from file: mutations.dm public override dynamic sting_action(Mob user = null, Ent_Static target = null) { Changeling changeling = null; if (!user.canUnEquip(((dynamic)user).wear_suit)) { user.WriteMsg(new Txt().the(((dynamic)user).wear_suit).item().str(" is stuck to your body, you cannot grow a ").item(this.suit_name_simple).str(" over it!").ToString()); return(null); } if (!user.canUnEquip(((dynamic)user).head)) { user.WriteMsg(new Txt().the(((dynamic)user).head).item().str(" is stuck on your head, you cannot grow a ").item(this.helmet_name_simple).str(" over it!").ToString()); return(null); } user.unEquip(((dynamic)user).head); user.unEquip(((dynamic)user).wear_suit); user.equip_to_slot_if_possible(Lang13.Call(this.suit_type, user), 13, true, true, true); user.equip_to_slot_if_possible(Lang13.Call(this.helmet_type, user), 11, true, true, true); changeling = user.mind.changeling; changeling.chem_recharge_slowdown += this.recharge_slowdown; return(1); }
// Function from file: changeling_power.dm public void take_chemical_cost(Changeling changeling = null) { changeling.chem_charges -= this.chemical_cost; changeling.geneticdamage += this.genetic_damage; return; }
// Function from file: absorb.dm public override dynamic sting_action(Mob user = null, Ent_Static target = null) { Changeling changeling = null; dynamic G = null; Mob_Living target2 = null; int? stage = null; ByTable recent_speech = null; dynamic spoken_memory = null; dynamic spoken_memory2 = null; changeling = user.mind.changeling; G = user.get_active_hand(); target2 = G.affecting; changeling.isabsorbing = true; stage = null; stage = 1; while ((stage ?? 0) <= 3) { switch ((int?)(stage)) { case 1: user.WriteMsg("<span class='notice'>This creature is compatible. We must hold still...</span>"); break; case 2: user.visible_message("<span class='warning'>" + user + " extends a proboscis!</span>", "<span class='notice'>We extend a proboscis.</span>"); break; case 3: user.visible_message("<span class='danger'>" + user + " stabs " + target2 + " with the proboscis!</span>", "<span class='notice'>We stab " + target2 + " with the proboscis.</span>"); target2.WriteMsg("<span class='userdanger'>You feel a sharp stabbing pain!</span>"); target2.take_overall_damage(40); break; } GlobalFuncs.feedback_add_details("changeling_powers", "A" + stage); if (!GlobalFuncs.do_mob(user, target2, 150)) { user.WriteMsg("<span class='warning'>Our absorption of " + target2 + " has been interrupted!</span>"); changeling.isabsorbing = false; return(null); } stage++; } user.visible_message("<span class='danger'>" + user + " sucks the fluids from " + target2 + "!</span>", "<span class='notice'>We have absorbed " + target2 + ".</span>"); target2.WriteMsg("<span class='userdanger'>You are absorbed by the changeling!</span>"); if (!changeling.has_dna(((dynamic)target2).dna)) { changeling.add_new_profile(target2, user); } if (user.nutrition < 450) { user.nutrition = Num13.MinInt(((int)(user.nutrition + target2.nutrition)), 450); } if (target2.mind != null) { target2.mind.show_memory(this, false); recent_speech = new ByTable(); if (target2.say_log.len > 8) { recent_speech = target2.say_log.Copy(target2.say_log.len - 8 + 1, 0); } else { foreach (dynamic _b in Lang13.Enumerate(target2.say_log)) { spoken_memory = _b; if (recent_speech.len >= 8) { break; } recent_speech.Add(spoken_memory); } } if (recent_speech.len != 0) { user.mind.store_memory("<B>Some of " + target2 + "'s speech patterns, we should study these to better impersonate them!</B>"); user.WriteMsg("<span class='boldnotice'>Some of " + target2 + "'s speech patterns, we should study these to better impersonate them!</span>"); foreach (dynamic _c in Lang13.Enumerate(recent_speech)) { spoken_memory2 = _c; user.mind.store_memory("\"" + spoken_memory2 + "\""); user.WriteMsg("<span class='notice'>\"" + spoken_memory2 + "\"</span>"); } user.mind.store_memory("<B>We have no more knowledge of " + target2 + "'s speech patterns.</B>"); user.WriteMsg("<span class='boldnotice'>We have no more knowledge of " + target2 + "'s speech patterns.</span>"); } if (target2.mind.changeling != null) { changeling.chem_charges += Num13.MinInt(((int)(target2.mind.changeling.chem_charges)), Convert.ToInt32(changeling.chem_storage)); changeling.absorbedcount += target2.mind.changeling.absorbedcount; target2.mind.changeling.stored_profiles.len = 1; target2.mind.changeling.absorbedcount = 0; } } changeling.chem_charges = Num13.MinInt(((int)(changeling.chem_charges + 10)), Convert.ToInt32(changeling.chem_storage)); changeling.isabsorbing = false; changeling.canrespec = true; target2.death(false); ((dynamic)target2).Drain(); return(1); }
// Function from file: evolution_menu.dm public dynamic create_menu(Changeling changeling = null) { dynamic dat = null; int i = 0; dynamic path = null; dynamic P = null; bool ownsthis = false; string color = null; dat += "<html><head><title>Changling Evolution Menu</title></head>"; dat += new Txt(@" <head> <script type='text/javascript'> var locked_tabs = new Array(); function updateSearch(){ var filter_text = document.getElementById('filter'); var filter = filter_text.value.toLowerCase(); if(complete_list != null && complete_list != """"){ var mtbl = document.getElementById(""maintable_data_archive""); mtbl.innerHTML = complete_list; } if(filter.value == """"){ return; }else{ var maintable_data = document.getElementById('maintable_data'); var ltr = maintable_data.getElementsByTagName(""tr""); for ( var i = 0; i < ltr.length; ++i ) { try{ var tr = ltr[i]; if(tr.getAttribute(""id"").indexOf(""data"") != 0){ continue; } var ltd = tr.getElementsByTagName(""td""); var td = ltd[0]; var lsearch = td.getElementsByTagName(""b""); var search = lsearch[0]; //var inner_span = li.getElementsByTagName(""span"")[1] //Should only ever contain one element. //document.write(""<p>""+search.innerText+""<br>""+filter+""<br>""+search.innerText.indexOf(filter)) if ( search.innerText.toLowerCase().indexOf(filter) == -1 ) { //document.write(""a""); //ltr.removeChild(tr); td.innerHTML = """"; i--; } }catch(err) { } } } var count = 0; var index = -1; var debug = document.getElementById(""debug""); locked_tabs = new Array(); } function expand(id,name,desc,helptext,power,ownsthis){ clearAll(); var span = document.getElementById(id); body = ""<table><tr><td>""; body += ""</td><td align='center'>""; body += ""<font size='2'><b>""+desc+""</b></font> <BR>"" body += ""<font size='2'><span class='danger'>""+helptext+""</span></font> <BR>"" if(!ownsthis) { body += ""<a href='?src=" ).Ref(this).str(@";P=""+power+""'>Evolve</a>"" } body += ""</td><td align='center'>""; body += ""</td></tr></table>""; span.innerHTML = body } function clearAll(){ var spans = document.getElementsByTagName('span'); for(var i = 0; i < spans.length; i++){ var span = spans[i]; var id = span.getAttribute(""id""); if(!(id.indexOf(""item"")==0)) continue; var pass = 1; for(var j = 0; j < locked_tabs.length; j++){ if(locked_tabs[j]==id){ pass = 0; break; } } if(pass != 1) continue; span.innerHTML = """"; } } function addToLocked(id,link_id,notice_span_id){ var link = document.getElementById(link_id); var decision = link.getAttribute(""name""); if(decision == ""1""){ link.setAttribute(""name"",""2""); }else{ link.setAttribute(""name"",""1""); removeFromLocked(id,link_id,notice_span_id); return; } var pass = 1; for(var j = 0; j < locked_tabs.length; j++){ if(locked_tabs[j]==id){ pass = 0; break; } } if(!pass) return; locked_tabs.push(id); var notice_span = document.getElementById(notice_span_id); notice_span.innerHTML = ""<span class='danger'>Locked</span> ""; //link.setAttribute(""onClick"",""attempt('""+id+""','""+link_id+""','""+notice_span_id+""');""); //document.write(""removeFromLocked('""+id+""','""+link_id+""','""+notice_span_id+""')""); //document.write(""aa - ""+link.getAttribute(""onClick"")); } function attempt(ab){ return ab; } function removeFromLocked(id,link_id,notice_span_id){ //document.write(""a""); var index = 0; var pass = 0; for(var j = 0; j < locked_tabs.length; j++){ if(locked_tabs[j]==id){ pass = 1; index = j; break; } } if(!pass) return; locked_tabs[index] = """"; var notice_span = document.getElementById(notice_span_id); notice_span.innerHTML = """"; //var link = document.getElementById(link_id); //link.setAttribute(""onClick"",""addToLocked('""+id+""','""+link_id+""','""+notice_span_id+""')""); } function selectTextField(){ var filter_text = document.getElementById('filter'); filter_text.focus(); filter_text.select(); } </script> </head> " ).ToString(); dat += "<body onload='selectTextField(); updateSearch();' onkeyup='updateSearch();'>"; dat += new Txt(@" <table width='560' align='center' cellspacing='0' cellpadding='5' id='maintable'> <tr id='title_tr'> <td align='center'> <font size='5'><b>Changeling Evolution Menu</b></font><br> Hover over a power to see more information<br> Current ability choices remaining: " ).item(changeling.geneticpoints).str("<br>\n By rendering a lifeform to a husk, we gain enough power to alter and adapt our evolutions.<br>\n (<a href='?src=").Ref(this).str(@";readapt=1'>Readapt</a>)<br> <p> </td> </tr> <tr id='search_tr'> <td align='center'> <b>Search:</b> <input type='text' id='filter' value='' style='width:300px;'> </td> </tr> </table> " ).ToString(); dat += "\n <span id='maintable_data_archive'>\n <table width='560' align='center' cellspacing='0' cellpadding='5' id='maintable_data'>"; i = 1; foreach (dynamic _a in Lang13.Enumerate(GlobalVars.sting_paths)) { path = _a; P = Lang13.Call(path); if (P.dna_cost <= 0) { continue; } ownsthis = changeling.has_sting(P); color = null; if (ownsthis) { if (i % 2 == 0) { color = "#d8ebd8"; } else { color = "#c3dec3"; } } else if (i % 2 == 0) { color = "#f2f2f2"; } else { color = "#e6e6e6"; } dat += "\n\n <tr id='data"+ i + "' name='" + i + "' onClick=\"addToLocked('item" + i + "','data" + i + "','notice_span" + i + "')\">\n <td align='center' bgcolor='"+ color + "'>\n <span id='notice_span"+ i + "'></span>\n <a id='link"+ i + "'\n onmouseover='expand(\"item"+ i + "\",\"" + P.name + "\",\"" + P.desc + "\",\"" + P.helptext + "\",\"" + P + "\"," + ownsthis + ")'\n >\n <b id='search"+ i + "'>Evolve " + P + (ownsthis ? " - Purchased" : (P.req_dna > changeling.absorbedcount ? " - Requires " + P.req_dna + " absorptions" : " - Cost: " + P.dna_cost)) + "</b>\n </a>\n <br><span id='item"+ i + @"'></span> </td> </tr> " ; i++; } dat += @" </table> </span> <script type='text/javascript'> var maintable = document.getElementById(""maintable_data_archive""); var complete_list = maintable.innerHTML; </script> </body></html> " ; return(dat); }