// 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;
        }
示例#2
0
        // 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);
        }