RPG in City/플러그인: 두 판 사이의 차이

리버티게임(개발), 모두가 만들어가는 자유로운 게임
둘러보기로 이동 검색으로 이동
(정보를 적는 것을 잊음)
(타이틀 관련 함수와 세이브 데이터 JSON에 링크 추가하는 동작 제거, 정보 틀과 전투 틀의 element들의 id 변경 대응)
6번째 줄: 6번째 줄:
{{#vardefine:name|RPGinCity}}
{{#vardefine:name|RPGinCity}}
{{#vardefine:creat|Senouis}}
{{#vardefine:creat|Senouis}}
{{#vardefine:version|1.2}}
{{#vardefine:version|1.2.1}}
{{#vardefine:descript|RPG in City 자바스크립트 동작 제어}}
{{#vardefine:descript|RPG in City 자바스크립트 동작 제어}}
{{#vardefine:local|true}}
{{#vardefine:local|true}}
32번째 줄: 32번째 줄:
console.log(fullbasepagename);
console.log(fullbasepagename);
/*
function RPGinCity_Title() {
function RPGinCity_Title() {
var startbuttondiv = document.getElementById("RPGinCityStart");
var startbuttondiv = document.getElementById("RPGinCityStart");
47번째 줄: 47번째 줄:
}
}
}
}
*/
    /*
function RPGinCity_GoToCheckpoint () {
function RPGinCity_GoToCheckpoint () {
var JSONDatalist = document.getElementsByClassName("mw-json-value");
var JSONDatalist = document.getElementsByClassName("mw-json-value");
59번째 줄: 60번째 줄:
}
}
}
}
*/
function RPGinCity_pushFightInfo(targetUri, Mhp, Ehp, Jam, PJam, BanBomb, Etype, Elevel, Turn) {
function RPGinCity_pushFightInfo(targetUri, Mhp, Ehp, Jam, PJam, BanBomb, Etype, Elevel, Turn) {
targetUri.extend({mhp:Mhp});
targetUri.extend({mhp:Mhp});
79번째 줄: 80번째 줄:
// 플레이어 체력부터...
// 플레이어 체력부터...
var mhp = 0;
var mhp = 0;
var playerhealth = document.getElementById("playerhealth");
var playerhealth = document.getElementById("RPGinCity-playerhealth");
if (isNaN(queryparams.mhp)) {
if (isNaN(queryparams.mhp)) {
mhp = jsonfile.체력;
mhp = jsonfile.체력;
87번째 줄: 88번째 줄:
playerhealth.innerText = mhp;
playerhealth.innerText = mhp;
//적의 레벨
//적의 레벨
var enemylevel = document.getElementById("enemylevel");
var enemylevel = document.getElementById("RPGinCity-enemylevel");
enemylevel.innerText = queryparams.elevel; // elevel는 항상 undefined이 아니다.
enemylevel.innerText = queryparams.elevel; // elevel는 항상 undefined이 아니다.
//적의 체력
//적의 체력
var enemyhealth = document.getElementById("enemyhealth");
var enemyhealth = document.getElementById("RPGinCity-enemyhealth");
enemyhealth.innerText = queryparams.ehp; // ep는 항상 undefined이 아니다.
enemyhealth.innerText = queryparams.ehp; // ep는 항상 undefined이 아니다.
//공격 페이즈
//공격 페이즈
var nextPhaseUri = new mw.Uri("https://liberty.banipest.com/index.php?title="+currentpage);
var nextPhaseUri = new mw.Uri("https://liberty.banipest.com/index.php?title="+currentpage);
var attackEnemy = document.getElementById("attackEnemy");
var attackEnemy = document.getElementById("RPGinCity-attackEnemy");
var attackPower = Math.round(Math.random() * jsonfile.레벨*3) + jsonfile.무기;
var attackPower = Math.round(Math.random() * jsonfile.레벨*3) + jsonfile.무기;
var attackEnemyUri = RPGinCity_pushFightInfo(nextPhaseUri.clone(), mhp, (queryparams.ehp - attackPower) >= 0?queryparams.ehp - attackPower : 0, queryparams.j, queryparams.bj, queryparams.bb, queryparams.etype, queryparams.elevel, 2);
var attackEnemyUri = RPGinCity_pushFightInfo(nextPhaseUri.clone(), mhp, (queryparams.ehp - attackPower) >= 0?queryparams.ehp - attackPower : 0, queryparams.j, queryparams.bj, queryparams.bb, queryparams.etype, queryparams.elevel, 2);
if (attackEnemy !== undefined && attackEnemy !== null)attackEnemy.innerHTML="<a href=\"" + attackEnemyUri.toString() + "\">그냥 공격!</a>";
if (attackEnemy !== undefined && attackEnemy !== null)attackEnemy.innerHTML="<a href=\"" + attackEnemyUri.toString() + "\">그냥 공격!</a>";
var useJam = document.getElementById("useJam");
var useJam = document.getElementById("RPGinCity-useJam");
var useJamUri = RPGinCity_pushFightInfo(nextPhaseUri.clone(), jsonfile.체력, queryparams.ehp, queryparams.j, queryparams.bj, queryparams.bb, queryparams.etype, queryparams.elevel, 2);
var useJamUri = RPGinCity_pushFightInfo(nextPhaseUri.clone(), jsonfile.체력, queryparams.ehp, queryparams.j, queryparams.bj, queryparams.bb, queryparams.etype, queryparams.elevel, 2);
if (useJam !== undefined && useJam !== null)useJam.innerHTML="<a href=\"" + useJamUri.toString() + "\">잼으로 회복!</a>";
if (useJam !== undefined && useJam !== null)useJam.innerHTML="<a href=\"" + useJamUri.toString() + "\">잼으로 회복!</a>";
var usePJ = document.getElementById("usePJ");
var usePJ = document.getElementById("RPGinCity-usePJ");
var usePJUri = RPGinCity_pushFightInfo(nextPhaseUri.clone(), mhp, queryparams.ehp > 20 ? queryparams.ehp - 20 : 0, queryparams.j, queryparams.bj, queryparams.bb, queryparams.etype, queryparams.elevel, 2);
var usePJUri = RPGinCity_pushFightInfo(nextPhaseUri.clone(), mhp, queryparams.ehp > 20 ? queryparams.ehp - 20 : 0, queryparams.j, queryparams.bj, queryparams.bb, queryparams.etype, queryparams.elevel, 2);
if (usePJ !== undefined && usePJ !== null)usePJ.innerHTML="<a href=\"" + usePJUri.toString() + "\">배쨈 열기!</a>";
if (usePJ !== undefined && usePJ !== null)usePJ.innerHTML="<a href=\"" + usePJUri.toString() + "\">배쨈 열기!</a>";
var useBanbomb = document.getElementById("useBanbomb");
var useBanbomb = document.getElementById("RPGinCity-useBanbomb");
var useBanbombUri = RPGinCity_pushFightInfo(nextPhaseUri.clone(), mhp, queryparams.ehp/2, queryparams.j, queryparams.bj, queryparams.bb, queryparams.etype, queryparams.elevel, 2);
var useBanbombUri = RPGinCity_pushFightInfo(nextPhaseUri.clone(), mhp, queryparams.ehp/2, queryparams.j, queryparams.bj, queryparams.bb, queryparams.etype, queryparams.elevel, 2);
if (useBanbomb !== undefined && useBanbomb !== null)useBanbomb.innerHTML="<a href=\"" + useBanbombUri.toString() + "\">차단폭탄!</a>";
if (useBanbomb !== undefined && useBanbomb !== null)useBanbomb.innerHTML="<a href=\"" + useBanbombUri.toString() + "\">차단폭탄!</a>";
//방어 페이즈
//방어 페이즈
var Blocking = document.getElementById("Block");
var Blocking = document.getElementById("RPGinCity-Block");
var BlockingUri = RPGinCity_pushFightInfo(nextPhaseUri.clone(), mhp- Math.round(Math.random() * queryparams.elevel * 0.75), queryparams.ehp , queryparams.j, queryparams.bj, queryparams.bb, queryparams.etype, queryparams.elevel, 1);
var BlockingUri = RPGinCity_pushFightInfo(nextPhaseUri.clone(), mhp- Math.round(Math.random() * queryparams.elevel * 0.75), queryparams.ehp , queryparams.j, queryparams.bj, queryparams.bb, queryparams.etype, queryparams.elevel, 1);
if (Blocking !== undefined && Blocking !== null)Blocking.innerHTML="<a href=\"" + BlockingUri.toString() + "\">방어</a>";
if (Blocking !== undefined && Blocking !== null)Blocking.innerHTML="<a href=\"" + BlockingUri.toString() + "\">방어</a>";
var FailRunning = document.getElementById("FailRunning");
var FailRunning = document.getElementById("RPGinCity-FailRunning");
var FailRunningUri = RPGinCity_pushFightInfo(nextPhaseUri.clone(), mhp - Math.round(Math.random() * queryparams.elevel), queryparams.ehp, queryparams.j, queryparams.bj, queryparams.bb, queryparams.etype, queryparams.elevel, 1);
var FailRunningUri = RPGinCity_pushFightInfo(nextPhaseUri.clone(), mhp - Math.round(Math.random() * queryparams.elevel), queryparams.ehp, queryparams.j, queryparams.bj, queryparams.bb, queryparams.etype, queryparams.elevel, 1);
if (FailRunning !== undefined && FailRunning !== null)FailRunning.innerHTML="<a href=\"" + FailRunningUri.toString() + "\">도망치자!</a>";
if (FailRunning !== undefined && FailRunning !== null)FailRunning.innerHTML="<a href=\"" + FailRunningUri.toString() + "\">도망치자!</a>";
var RunFromEnemy = document.getElementById("RunFromEnemy");
var RunFromEnemy = document.getElementById("RPGinCity-RunFromEnemy");
var MustKill = document.getElementById("mustKill");
var MustKill = document.getElementById("mustKill");
if (RunFromEnemy !== undefined && RunFromEnemy !== null && (MustKill === undefined || MustKill === null))RunFromEnemy.style.visibility = "visible";
if (RunFromEnemy !== undefined && RunFromEnemy !== null && (MustKill === undefined || MustKill === null))RunFromEnemy.style.visibility = "visible";
121번째 줄: 122번째 줄:
function RPGinCity_SaveHandle(saveGameHandle) {
function RPGinCity_SaveHandle(saveGameHandle) {
var api = new mw.Api();
var api = new mw.Api();
var Templink = new mw.Uri(window.location.href);
var Templink = new mw.Uri(window.location.href);
var queryparams = Templink.query;
var queryparams = Templink.query;
133번째 줄: 135번째 줄:
).then(function () {
).then(function () {
    alert( 'Saved!' );
    alert( 'Saved!' );
    saveGameHandle.innerHTML="<a href=\"https://liberty.banipest.com/index.php?title="+ "사용자:"+usernameStr+"/RPG_in_City.json\">저장 확인하기</a>";
    document.getElementById("RPGinCity-searchphase").style.display = "block";
});
});
break;
break;
148번째 줄: 150번째 줄:
).then(function () {
).then(function () {
    alert( 'Saved!' );
    alert( 'Saved!' );
    saveGameHandle.innerHTML="<a href=\"https://liberty.banipest.com/index.php?title="+ "사용자:"+usernameStr+"/RPG_in_City.json\">저장 확인하기</a>";
    document.getElementById("RPGinCity-searchphase").style.display = "block";
});
});
break;
break;
162번째 줄: 164번째 줄:
).then(function () {
).then(function () {
    alert( 'Saved!' );
    alert( 'Saved!' );
    saveGameHandle.innerHTML="<a href=\"https://liberty.banipest.com/index.php?title="+ "사용자:"+usernameStr+"/RPG_in_City.json\">저장 확인하기</a>";
    document.getElementById("RPGinCity-searchphase").style.display = "block";
});
});
break;
break;
175번째 줄: 177번째 줄:
).then(function () {
).then(function () {
    alert( 'Saved!' );
    alert( 'Saved!' );
    saveGameHandle.innerHTML="<a href=\"https://liberty.banipest.com/index.php?title="+ "사용자:"+usernameStr+"/RPG_in_City.json\">저장 확인하기</a>";
    document.getElementById("RPGinCity-searchphase").style.display = "block";
});
});
break;
break;
189번째 줄: 191번째 줄:
).then(function () {
).then(function () {
    alert( 'Saved!' );
    alert( 'Saved!' );
    saveGameHandle.innerHTML="<a href=\"https://liberty.banipest.com/index.php?title="+ "사용자:"+usernameStr+"/RPG_in_City.json\">저장 확인하기</a>";
    document.getElementById("RPGinCity-searchphase").style.display = "block";
});
});
break;
break;
201번째 줄: 203번째 줄:
).then(function () {
).then(function () {
    alert( 'Saved!' );
    alert( 'Saved!' );
    saveGameHandle.innerHTML="<a href=\"https://liberty.banipest.com/index.php?title="+ "사용자:"+usernameStr+"/RPG_in_City.json\">저장 확인하기</a>";
    document.getElementById("RPGinCity-searchphase").style.display = "block";
});
});
break;
break;
212번째 줄: 214번째 줄:
).then(function () {
).then(function () {
    alert( 'Saved!' );
    alert( 'Saved!' );
    saveGameHandle.innerHTML="<a href=\"https://liberty.banipest.com/index.php?title="+ "사용자:"+usernameStr+"/RPG_in_City.json\">저장 확인하기</a>";
    document.getElementById("RPGinCity-searchphase").style.display = "block";
});
});
break;
break;
228번째 줄: 230번째 줄:
).then(function () {
).then(function () {
    alert( 'Saved!' );
    alert( 'Saved!' );
    saveGameHandle.innerHTML="<a href=\"https://liberty.banipest.com/index.php?title="+ "사용자:"+usernameStr+"/RPG_in_City.json\">저장 확인하기</a>";
    document.getElementById("RPGinCity-searchphase").style.display = "block";
});
});
break;
break;
239번째 줄: 241번째 줄:
function RPGinCity_HandleStore(jsondata, storeNumber) {
function RPGinCity_HandleStore(jsondata, storeNumber) {
var i = storeNumber;
var i = storeNumber;
var Jam = document.getElementsByClassName("JamAmount")[i];
var Jam = document.getElementsByClassName("RPGinCity-JamAmount")[i];
if (Jam !== undefined && Jam !== null && Jam.innerText === "") Jam.innerText = "0";
if (Jam !== undefined && Jam !== null && Jam.innerText === "") Jam.innerText = "0";
var PearJam = document.getElementsByClassName("PearJamAmount")[i];
var PearJam = document.getElementsByClassName("RPGinCity-PearJamAmount")[i];
if (PearJam !== undefined && PearJam !== null && PearJam.innerText === "") PearJam.innerText = "0";
if (PearJam !== undefined && PearJam !== null && PearJam.innerText === "") PearJam.innerText = "0";
var BB = document.getElementsByClassName("BanBombAmount")[i];
var BB = document.getElementsByClassName("RPGinCity-BanBombAmount")[i];
if (BB !== undefined && BB !== null && BB.innerText === "") BB.innerText = "0";
if (BB !== undefined && BB !== null && BB.innerText === "") BB.innerText = "0";
var WeaponLevelUp = document.getElementsByClassName("WeaponLevelUp")[i];
var WeaponLevelUp = document.getElementsByClassName("RPGinCity-WeaponLevelUp")[i];
if (WeaponLevelUp !== undefined && WeaponLevelUp !== null && WeaponLevelUp.innerText === "") WeaponLevelUp.innerText = "0";
if (WeaponLevelUp !== undefined && WeaponLevelUp !== null && WeaponLevelUp.innerText === "") WeaponLevelUp.innerText = "0";
var BuyButton = document.getElementsByClassName("BuyButton")[i];
var BuyButton = document.getElementsByClassName("RPGinCity-BuyButton")[i];
if (BuyButton !== undefined && BuyButton !== null) {
if (BuyButton !== undefined && BuyButton !== null) {
if (50 * parseInt(Jam.innerText) + 75 * parseInt(PearJam.innerText) + 150* parseInt(BB.innerText) + 1000*parseInt(WeaponLevelUp.innerText) > jsondata.돈) {
if (50 * parseInt(Jam.innerText) + 75 * parseInt(PearJam.innerText) + 150* parseInt(BB.innerText) + 1000*parseInt(WeaponLevelUp.innerText) > jsondata.돈) {
258번째 줄: 260번째 줄:
function RPGinCity_Callback_fetchUserInformation(jsonfile) {
function RPGinCity_Callback_fetchUserInformation(jsonfile) {
// 정보 틀 관련
// 정보 틀 관련
var playerinfo = document.getElementsByClassName("Playerinfo");
var playerinfo = document.getElementsByClassName("RPGinCity-Playerinfo");
var LevelUpButton = document.getElementById("LevelUp");
var LevelUpButton = document.getElementById("RPGinCity-LevelUp");
if ( playerinfo !== undefined && playerinfo !== null && playerinfo.length > 0)  {
if ( playerinfo !== undefined && playerinfo !== null && playerinfo.length > 0)  {
playerinfo[0].innerText = jsonfile['레벨'];
playerinfo[0].innerText = jsonfile['레벨'];
274번째 줄: 276번째 줄:
}
}
// RPG in City/집 쉬기 기능
// RPG in City/집 쉬기 기능
var RestingInHouse = document.getElementById("House");
var RestingInHouse = document.getElementById("RPGinCity-House");
if (RestingInHouse !== undefined && RestingInHouse != null) {
if (RestingInHouse !== undefined && RestingInHouse != null) {
if (jsonfile.체력 < jsonfile.레벨 * 16){
if (jsonfile.체력 < jsonfile.레벨 * 16){
282번째 줄: 284번째 줄:
}
}
// RPG in City 전투 관련 스크립트
// RPG in City 전투 관련 스크립트
var inBattle = document.getElementById("Fight");
var inBattle = document.getElementById("RPGinCity-Fight");
if (inBattle !== undefined && inBattle !== null){  
if (inBattle !== undefined && inBattle !== null){  
RPGinCity_HandleBattle(jsonfile);
RPGinCity_HandleBattle(jsonfile);
443번째 줄: 445번째 줄:
// ----------------------------------------------------Main------------------------------------------------------------
// ----------------------------------------------------Main------------------------------------------------------------
RPGinCity_Title();
// RPGinCity_Title();
if (currentpage === "사용자:"+usernameStr+"/RPG_in_City.json"){
// if (currentpage === "사용자:"+usernameStr+"/RPG_in_City.json"){
RPGinCity_GoToCheckpoint();
// RPGinCity_GoToCheckpoint();
}
// }
else if (currentpage.substring(0,11) === "RPG_in_City") { // in game but not in title screen
// else if (currentpage.substring(0,11) === "RPG_in_City") { // in game but not in title screen
var api = new mw.Api();
var api = new mw.Api();
console.log("fetching player info...");
console.log("fetching player info...");
468번째 줄: 470번째 줄:
document.getElementById("RPGinCityLoad").style.display = "none";
document.getElementById("RPGinCityLoad").style.display = "none";
});
});
}
// }
 
}
}
$(RPGinCity);
$(RPGinCity);

2023년 7월 9일 (일) 01:34 판

요령 => 아래 변수들의 첫번째 인자들을 내용에 맞게 자르고 붙여넣어주세요

!!!!!!!!!!!!!!!! 플러그인 정보 입력 구간 윗부분은 만지지 마시오 절대로!!!!!!!!!!!!!!!!!






!!!!!!!!!!!!!!!! 플러그인 정보 입력 구간 끝 아래는 만지지 마시오!!!!!!!!!!!!!!!!!

이 플러그인에 대한 설명문서는 RPG in City/플러그인/설명문서에서 만들 수 있습니다.

		 
 // 이부분에 코드 입력 //
function RPGinCity(){
	var usernameStr = mw.user.getName();
	var currentpage = mw.config.get("wgPageName");
	var pagenode = currentpage.split('/');
	console.log("사용자:"+ usernameStr + "/RPG_in_City.json");
	if (pagenode[0] !== "RPG_in_City"){
		if (currentpage !== "사용자:"+ usernameStr + "/RPG_in_City.json") {
			console.log("Current page is "+ currentpage +", not playing RPG in City");
			return;
		}
	}
	var fullbasepagename = "";
	for (var node = 0 ; node < pagenode.length - 2; node++){
		fullbasepagename = fullbasepagename + pagenode[node] + "/";
	}
	fullbasepagename = fullbasepagename + pagenode[pagenode.length - 2];
	console.log(fullbasepagename);
	
	/*
	function RPGinCity_Title() {
		var startbuttondiv = document.getElementById("RPGinCityStart");
		var loadbuttondiv =  document.getElementById("RPGinCityLoad");
		if (startbuttondiv !== null && loadbuttondiv !== null){
			if (usernameStr === null) {
				startbuttondiv.innerHTML = "<p>로그인이 필요합니다</p>";
			} else {
				var UserDBTitle = new mw.Title("사용자:"+usernameStr+"/RPG in City.json");
				startbuttondiv.innerHTML = "<p><big><a href=\""+mw.util.getUrl(UserDBTitle.toText(),{action: 'edit', preload : '틀:RPG_in_City_DB_양식', summary:'생성'})+ "\">시작하기</a></big></p>";
				loadbuttondiv.innerHTML = "<p><big><a href=\""+mw.util.getUrl(UserDBTitle.toText())+ "\">계속하기</a></big></p>";
	
			}
		}
	}
	*/
    /*
	function RPGinCity_GoToCheckpoint () {
		var JSONDatalist = document.getElementsByClassName("mw-json-value");
		if (currentpage === ("사용자:"+usernameStr+"/RPG_in_City.json") && JSONDatalist.length !== 0) {
			var MWContent = document.getElementById("mw-content-text"); 
			var GotoLink= document.createElement("a");
			GotoLink.href = mw.util.getUrl((JSONDatalist[0].innerText.substring(1, JSONDatalist[0].innerText.length-1)));
			console.log(GotoLink.href);
			GotoLink.innerText = "게임 계속하기";
			MWContent.appendChild(GotoLink);
		}
	}
	*/
	function RPGinCity_pushFightInfo(targetUri, Mhp, Ehp, Jam, PJam, BanBomb, Etype, Elevel, Turn) {
		targetUri.extend({mhp:Mhp});
		targetUri.extend({ehp:Ehp});
		targetUri.extend({j:Jam});
		targetUri.extend({bj:PJam});
		targetUri.extend({bb:BanBomb});
		targetUri.extend({etype:Etype});
		targetUri.extend({elevel:Elevel});
		targetUri.extend({turn:Turn});
		return targetUri;
	}
	
	function RPGinCity_HandleBattle(jsonfile) {
		var Battlelink = new mw.Uri(window.location.href);
		console.log("building battle phase...");
		var queryparams = Battlelink.query;
		// 이제 필요한 값을 구해 화면에 표시한다.
		// 플레이어 체력부터...
		var mhp = 0;
		var playerhealth = document.getElementById("RPGinCity-playerhealth");
		if (isNaN(queryparams.mhp)) {
			mhp = jsonfile.체력;
		} else {
			mhp = queryparams.mhp; // mhp는 이전 문서의 값을 받는다.
		}
		playerhealth.innerText = mhp;
		//적의 레벨
		var enemylevel = document.getElementById("RPGinCity-enemylevel");
		enemylevel.innerText = queryparams.elevel; // elevel는 항상 undefined이 아니다.
		//적의 체력
		var enemyhealth = document.getElementById("RPGinCity-enemyhealth");
		enemyhealth.innerText = queryparams.ehp; // ep는 항상 undefined이 아니다.
		//공격 페이즈
		var nextPhaseUri = new mw.Uri("https://liberty.banipest.com/index.php?title="+currentpage);
		var attackEnemy = document.getElementById("RPGinCity-attackEnemy");
		var attackPower = Math.round(Math.random() * jsonfile.레벨*3) + jsonfile.무기;
		var attackEnemyUri = RPGinCity_pushFightInfo(nextPhaseUri.clone(), mhp, (queryparams.ehp - attackPower) >= 0?queryparams.ehp - attackPower : 0, queryparams.j, queryparams.bj, queryparams.bb, queryparams.etype, queryparams.elevel, 2);
		if (attackEnemy !== undefined && attackEnemy !== null)attackEnemy.innerHTML="<a href=\"" + attackEnemyUri.toString() + "\">그냥 공격!</a>";
		var useJam = document.getElementById("RPGinCity-useJam");
		var useJamUri = RPGinCity_pushFightInfo(nextPhaseUri.clone(), jsonfile.체력, queryparams.ehp, queryparams.j, queryparams.bj, queryparams.bb, queryparams.etype, queryparams.elevel, 2);
		if (useJam !== undefined && useJam !== null)useJam.innerHTML="<a href=\"" + useJamUri.toString() + "\">잼으로 회복!</a>";
		var usePJ = document.getElementById("RPGinCity-usePJ");
		var usePJUri = RPGinCity_pushFightInfo(nextPhaseUri.clone(), mhp, queryparams.ehp > 20 ? queryparams.ehp - 20 : 0, queryparams.j, queryparams.bj, queryparams.bb, queryparams.etype, queryparams.elevel, 2);
		if (usePJ !== undefined && usePJ !== null)usePJ.innerHTML="<a href=\"" + usePJUri.toString() + "\">배쨈 열기!</a>";
		var useBanbomb = document.getElementById("RPGinCity-useBanbomb");
		var useBanbombUri = RPGinCity_pushFightInfo(nextPhaseUri.clone(), mhp, queryparams.ehp/2, queryparams.j, queryparams.bj, queryparams.bb, queryparams.etype, queryparams.elevel, 2);
		if (useBanbomb !== undefined && useBanbomb !== null)useBanbomb.innerHTML="<a href=\"" + useBanbombUri.toString() + "\">차단폭탄!</a>";
		//방어 페이즈
		var Blocking = document.getElementById("RPGinCity-Block");
		var BlockingUri = RPGinCity_pushFightInfo(nextPhaseUri.clone(), mhp- Math.round(Math.random() * queryparams.elevel * 0.75), queryparams.ehp , queryparams.j, queryparams.bj, queryparams.bb, queryparams.etype, queryparams.elevel, 1);
		if (Blocking !== undefined && Blocking !== null)Blocking.innerHTML="<a href=\"" + BlockingUri.toString() + "\">방어</a>";
		var FailRunning = document.getElementById("RPGinCity-FailRunning");
		var FailRunningUri = RPGinCity_pushFightInfo(nextPhaseUri.clone(), mhp - Math.round(Math.random() * queryparams.elevel), queryparams.ehp, queryparams.j, queryparams.bj, queryparams.bb, queryparams.etype, queryparams.elevel, 1);
		if (FailRunning !== undefined && FailRunning !== null)FailRunning.innerHTML="<a href=\"" + FailRunningUri.toString() + "\">도망치자!</a>";
		var RunFromEnemy = document.getElementById("RPGinCity-RunFromEnemy");
		var MustKill = document.getElementById("mustKill");
		if (RunFromEnemy !== undefined && RunFromEnemy !== null && (MustKill === undefined || MustKill === null))RunFromEnemy.style.visibility = "visible";
	}
	
	function RPGinCity_SaveHandle(saveGameHandle) {
		var api = new mw.Api();

		var Templink = new mw.Uri(window.location.href);
		var queryparams = Templink.query;
		switch (saveGameHandle.innerText){
			case "서브퀘스트완료":
				new mw.Api().edit("사용자:"+usernameStr+"/RPG_in_City.json", function (revision) {
					var jsondata = JSON.parse(revision.content);
					jsondata.추가1 = 0;
					jsondata.최근페이지 = fullbasepagename;
					return {text: JSON.stringify(jsondata), summary: "서브퀘스트완료"};
				}
				).then(function () {
				    alert( 'Saved!' );
				    document.getElementById("RPGinCity-searchphase").style.display = "block";
				});
				break;
			case "서브퀘스트수행":
				new mw.Api().edit("사용자:"+usernameStr+"/RPG_in_City.json", function (revision) {
					var jsondata = JSON.parse(revision.content);
					var questID = document.getElementById("questID");
					if (questID !== undefined && questID !== null){
						jsondata.추가1 = parseInt(questID.innerText);
						jsondata.최근페이지 = fullbasepagename;
					}
					return {text: JSON.stringify(jsondata), summary: "서브퀘스트수행"};
				}
				).then(function () {
				    alert( 'Saved!' );
				    document.getElementById("RPGinCity-searchphase").style.display = "block";
				});
				break;
			case "메인퀘스트수행":
				new mw.Api().edit("사용자:"+usernameStr+"/RPG_in_City.json", function (revision) {
					var jsondata = JSON.parse(revision.content);
					var mainQuestPoint = document.getElementById("mainQuestPoint");
					if (mainQuestPoint !== undefined && mainQuestPoint !== null) jsondata.최근페이지 = mainQuestPoint.innerText;
					var questID = document.getElementById("questID");
					if (questID !== undefined && questID !== null)jsondata.추가2 = parseInt(questID.innerText);
					return {text: JSON.stringify(jsondata), summary: "메인퀘스트수행"};
				}
				).then(function () {
				    alert( 'Saved!' );
				    document.getElementById("RPGinCity-searchphase").style.display = "block";
				});
				break;
			case "동부요금지불":
				new mw.Api().edit("사용자:"+usernameStr+"/RPG_in_City.json", function (revision) {
					var jsondata = JSON.parse(revision.content);
					jsondata. -= 500*1;
					jsondata.추가2 = 5*1; // force to parse it a number
					jsondata.최근페이지 = "RPG in City/만남의 광장";
					return {text: JSON.stringify(jsondata), summary: "동부요금지불"};
				}
				).then(function () {
				    alert( 'Saved!' );
				    document.getElementById("RPGinCity-searchphase").style.display = "block";
				});
				break;
			case "전투승리":
				new mw.Api().edit("사용자:"+usernameStr+"/RPG_in_City.json", function (revision) {
					var jsondata = JSON.parse(revision.content);
					jsondata.체력 = parseInt(queryparams.mhp);
					jsondata.경험치 += queryparams.elevel*4;
					jsondata. += queryparams.elevel*5;
					jsondata.최근페이지 = currentpage.substring(0, currentpage.length-3);
					return {text: JSON.stringify(jsondata), summary: "전투승리"};
				}
				).then(function () {
				    alert( 'Saved!' );
				    document.getElementById("RPGinCity-searchphase").style.display = "block";
				});
				break;
			case "레벨업":
				new mw.Api().edit("사용자:"+usernameStr+"/RPG_in_City.json", function (revision) {
					var jsondata = JSON.parse(revision.content);
					jsondata.레벨 += (jsondata.경험치 - jsondata.경험치 % 128)/128;
					jsondata.경험치 = jsondata.경험치 % 128;
					return {text: JSON.stringify(jsondata), summary: "레벨업"};
				}
				).then(function () {
				    alert( 'Saved!' );
				    document.getElementById("RPGinCity-searchphase").style.display = "block";
				});
				break;
			case "회복":
				new mw.Api().edit("사용자:"+usernameStr+"/RPG_in_City.json", function (revision) {
					var jsondata = JSON.parse(revision.content);
					jsondata.체력 = jsondata.레벨 * 16;
					return {text: JSON.stringify(jsondata), summary: "회복"};
				}
				).then(function () {
				    alert( 'Saved!' );
				    document.getElementById("RPGinCity-searchphase").style.display = "block";
				});
				break;
			case "결제":
				new mw.Api().edit("사용자:"+usernameStr+"/RPG_in_City.json", function (revision) {
					var jsondata = JSON.parse(revision.content);
					jsondata. += queryparams.j*1;
					jsondata.배쨈 += queryparams.bj*1;
					jsondata.차단폭탄 += queryparams.bb*1;
					jsondata.무기 += queryparams.weapon*1;
					jsondata. -= 50* queryparams.j + 75*queryparams.bj + 150*queryparams.bb + 1000 * queryparams.weapon;
					jsondata.최근페이지 = currentpage.substring(0, currentpage.length-3);
					return {text: JSON.stringify(jsondata), summary: "결제"};
				}
				).then(function () {
				    alert( 'Saved!' );
				    document.getElementById("RPGinCity-searchphase").style.display = "block";
				});
				break;
			default:
				    alert( 'No proper parameters' );
				break;
		}
	}
	
	function RPGinCity_HandleStore(jsondata, storeNumber) {
		var i = storeNumber;
		var Jam = document.getElementsByClassName("RPGinCity-JamAmount")[i];
		if (Jam !== undefined && Jam !== null && Jam.innerText === "") Jam.innerText = "0";
		var PearJam = document.getElementsByClassName("RPGinCity-PearJamAmount")[i];
		if (PearJam !== undefined && PearJam !== null && PearJam.innerText === "") PearJam.innerText = "0";
		var BB = document.getElementsByClassName("RPGinCity-BanBombAmount")[i];
		if (BB !== undefined && BB !== null && BB.innerText === "") BB.innerText = "0";
		var WeaponLevelUp = document.getElementsByClassName("RPGinCity-WeaponLevelUp")[i];
		if (WeaponLevelUp !== undefined && WeaponLevelUp !== null && WeaponLevelUp.innerText === "") WeaponLevelUp.innerText = "0";
		var BuyButton = document.getElementsByClassName("RPGinCity-BuyButton")[i];
		if (BuyButton !== undefined && BuyButton !== null) {
			if (50 * parseInt(Jam.innerText) + 75 * parseInt(PearJam.innerText) + 150* parseInt(BB.innerText) + 1000*parseInt(WeaponLevelUp.innerText) > jsondata.) {
				BuyButton.innerText = "돈이 부족하다. 나가서 돈을 구해오자.";
			}
			BuyButton.style.visibility = "visible";
		}
	}
	
	function RPGinCity_Callback_fetchUserInformation(jsonfile) {
		// 정보 틀 관련
		var playerinfo = document.getElementsByClassName("RPGinCity-Playerinfo");
		var LevelUpButton = document.getElementById("RPGinCity-LevelUp");
		if ( playerinfo !== undefined && playerinfo !== null && playerinfo.length > 0)  {
			playerinfo[0].innerText = jsonfile['레벨'];
			playerinfo[1].innerText = jsonfile['체력'];
			playerinfo[2].innerText = jsonfile['경험치'];
			playerinfo[3].innerText = jsonfile['잼'];
			playerinfo[4].innerText = jsonfile['배쨈'];
			playerinfo[5].innerText = jsonfile['차단폭탄'];
			playerinfo[6].innerText = jsonfile['돈'];
			playerinfo[7].innerText = jsonfile['무기'];
			if (LevelUpButton !== undefined && LevelUpButton !== null && jsonfile.경험치 > 128 && jsonfile.레벨 + jsonfile.경험치 /128 <= 50) {
				LevelUpButton.innerHTML = "<a href= \"https://liberty.banipest.com/index.php/RPG_in_City/레벨_업\">레벨 업!</a>";
			}
		}
		// RPG in City/집 쉬기 기능
		var RestingInHouse = document.getElementById("RPGinCity-House");
		if (RestingInHouse !== undefined && RestingInHouse != null) {
			if (jsonfile.체력 < jsonfile.레벨 * 16){
				RestingInHouse.innerHTML = "너는 한숨 자고 개운한 마음으로 이곳을 나가려고 한다.\n<a href=\"https://liberty.banipest.com/index.php/RPG_in_City/"+currentpage+"/회복\">쉬기</a>";
			}
			RestingInHouse.style.visibility = "visible";
		}
		// RPG in City 전투 관련 스크립트
		var inBattle = document.getElementById("RPGinCity-Fight");
		if (inBattle !== undefined && inBattle !== null){ 
			RPGinCity_HandleBattle(jsonfile);
		} // 전투 틀 처리 완료
		// 일반적인 상점(문서 내에 단 한 개 존재) 처리
		var storeHandle = document.getElementById("RiCStore");
		if (storeHandle !== undefined && storeHandle !== null){
			RPGinCity_HandleStore(jsonfile, 0);
		}
		//동부2구역구 - 중부구역구 이동 가능 여부 처리
		var DowntownRoadOpen = document.getElementById("DowntownRoad");
		if (DowntownRoadOpen !== undefined && DowntownRoadOpen !== null) {
			if (jsonfile.추가2 < 60) {
				DowntownRoadOpen.innerText = "이런!!! 다운타운 로드는 반달로 인해 막혀있다.";
			}
			DowntownRoadOpen.style.visibility = "visible";
		}
		//남부 1구역구 메인퀘스트
		var south1st = document.getElementById("south1st");
		if (south1st !== undefined && south1st !== null) {
			var displaypart;
			if (jsonfile.추가2 < 10){
				displaypart = document.getElementById("beforeBossfight");
				displaypart.style.display = "block";
			} else {
				displaypart = document.getElementById("afterBossfight");
				displaypart.style.display = "block";
			}
		}
		//중부구역구
		var toWest = document.getElementById("toWest");
		if (toWest !== undefined && toWest !== null) {
			if (jsonfile.추가2 < 25) {
				toWest.innerText = "서부 구역구 방향으로 가기 - <중부 구역구가 파괴된 시점에서 서부 구역구를 분리하는 장벽은 강력한 반달러들로 인해 봉쇄 상태를 유지하고 있다>";
			}
			toWest.style.visibility = "visible";
		}
		var toCentralOffice = document.getElementById("toCentralOffice");
		if (toCentralOffice !== undefined && toCentralOffice !== null) {
			if (jsonfile.추가2 < 40) {
				toCentralOffice.innerText = "시청으로 들어가기 - < 시청에 들어갈 방법을 찾아야 한다 >";
			}
			toCentralOffice.style.visibility = "visible";
		}
		var peacefulCentral = document.getElementById("peacefulCentral");
		var dangerousCentral = document.getElementById("dangerousCentral");
		if (peacefulCentral !== undefined && peacefulCentral !== null && dangerousCentral !== undefined && dangerousCentral !== null) {
			if (jsonfile.추가2 >= 70) {
				peacefulCentral.style.visibility = "visible";
			} else {
				dangerousCentral.style.visibility = "visible";
			}
		}
		// 중부 구역구 대피소 퀘스트
		var rescuePeregirl = document.getElementsByClassName("rescuePeregirl");
		if (rescuePeregirl !== undefined && rescuePeregirl !== null && rescuePeregirl.length > 0) {
			if (jsonfile.추가2 < 15) {
				rescuePeregirl[1].remove();
				rescuePeregirl[0].style.display = "block";
			} else if (jsonfile.추가2 === 20) {
				rescuePeregirl[0].remove();
				rescuePeregirl[0].style.display = "block";
			} else {
				rescuePeregirl[0].remove();
				rescuePeregirl[0].remove();
				rescuePeregirl[0].style.display = "block";
			}
		}
		var meetPeregirl = document.getElementsByClassName("meetPeregirl");
		if (meetPeregirl !== undefined && meetPeregirl !== null && meetPeregirl.length > 0) {
			if (jsonfile.추가2 < 20) {
				meetPeregirl[0].style.display = "block";
			} else {
				meetPeregirl[0].remove();
				meetPeregirl[0].style.display = "block";
			}
		}
		//남부 1구역구 상점, 문서 구조상 좀 구현이 복잡하여 분리한다.
		var south1stStore = document.getElementsByClassName("south1stStore");
		if (south1stStore !== undefined && south1stStore !== null && south1stStore.length > 0) {
			if (jsonfile.추가2 < 10) {
				south1stStore[0].style.display = "block";
				RPGinCity_HandleStore(jsonfile, 0);
			} else {
				south1stStore[1].style.display = "block";
				RPGinCity_HandleStore(jsonfile, 1);
			}
		}
		//시청 안의 산토끼 몰매 맞고 가나요~
		var cityOffice = document.getElementsByClassName("cityOffice");
		if (cityOffice !== undefined && cityOffice !== null && cityOffice.length > 0) {
			if (jsonfile.추가2 < 70) {
				cityOffice[0].style.display = "block";
			} else {
				cityOffice[1].style.display = "block";
			}
		}
		var cityOfficeInternal = document.getElementsByClassName("cityOfficeInternal");
		if (cityOfficeInternal !== undefined && cityOfficeInternal !== null && cityOfficeInternal.length > 0) {
			if (jsonfile.추가2 >= 65) {
				cityOfficeInternal[0].style.display = "block";
			} else {
				cityOfficeInternal[1].style.display = "block";
			}
		}
		var cityOffice3F = document.getElementsByClassName("cityOffice3F");
		if (cityOffice3F !== undefined && cityOffice3F !== null && cityOffice3F.length > 0) {
			if (jsonfile.추가2 >= 65) {
				cityOffice3F[0].style.display = "block";
			} else {
				cityOffice3F[1].style.display = "block";
			}
		}
		var mayorRoom = document.getElementsByClassName("mayorRoom");
		if (mayorRoom !== undefined && mayorRoom !== null && mayorRoom.length > 0) {
			if (jsonfile.추가2 >= 70) {
				mayorRoom[0].style.display = "block";
			} else {
				mayorRoom[1].style.display = "block";
			}
		}
		// 서브 퀘스트 관련
		var subQuestContent = document.getElementById("SubQuestContent");
		var parentNode;
		if (subQuestContent !== undefined && subQuestContent !== null){
			parentNode = subQuestContent.parentElement;
		}
		if (parentNode !== undefined && parentNode !== null && subQuestContent !== undefined && subQuestContent !== null) {
			if (jsonfile.추가1 !== 0) {
				parentNode.removeChild( subQuestContent );
			} else {
				subQuestContent.style.display = "block";
			}
		}
		var subQuestEnd = document.getElementById("SubQuestEnd");
		if (parentNode !== undefined && parentNode !== null &&subQuestEnd !== undefined && subQuestEnd !== null) {
			if (jsonfile.추가1 !== 1) {
				parentNode.removeChild( subQuestEnd );
			} else {
				subQuestEnd.style.display = "block";
			}
		}
		var subQuestNotEnd = document.getElementsByClassName("SubQuestNotEnd");
		if (parentNode !== undefined && parentNode !== null && subQuestNotEnd !== undefined && subQuestNotEnd !== null) {
			if (jsonfile.추가1 <2) {
				parentNode.removeChild( subQuestNotEnd[0] );
			} else {
				subQuestNotEnd[0].style.display = "block";
			}
		}
		// 자동 세이브 처리 - 가장 마지막에 와야 하는 것
		var saveGameHandle = document.getElementById("saveGame");
		if (saveGameHandle !== undefined && saveGameHandle !== null) {
			console.log("Saving...");
			RPGinCity_SaveHandle(saveGameHandle);
		}
	}
	
	
	// ----------------------------------------------------Main------------------------------------------------------------
	
	// RPGinCity_Title();
	
	// if (currentpage === "사용자:"+usernameStr+"/RPG_in_City.json"){
	// 	RPGinCity_GoToCheckpoint();
	// }
	// else if (currentpage.substring(0,11) === "RPG_in_City") { // in game but not in title screen
		var api = new mw.Api();
		console.log("fetching player info...");
		fetch("https://liberty.banipest.com/index.php?title="+"사용자:"+usernameStr+"/RPG_in_City.json"+"&action=raw")
			.then(function(response) {
				if (!response.ok) {
			        // make the promise be rejected if we didn't get a 2xx response
			        throw new Error("Not 2xx response", {cause: response});
			    }
				return response.json();
			})
			.then(function(response) {
				var parsedata = response;
				RPGinCity_Callback_fetchUserInformation(parsedata);
			}
			)
			.catch(function(e){
				console.log(e);
				document.getElementById("RPGinCityLoad").style.display = "none";
			});
	// }
}
$(RPGinCity);
 // 여기까지 코드 입력 //