バトル関連のソースコード

Mon, 17 Jan 2022 12:54:04 JST (1218d)
Top > バトル関連のソースコード

概要

 

へなぽこや様が制作したファンデーション5のソースコードから"引用"させていただいています

 

ゲームへのURLはこちら

https://game.nicovideo.jp/atsumaru/games/gm22140?link_in=index_wadai

 

公式のデータということで何らかの役には立つと思います

 
 
 

name, realname, maxhp, hp, atk

おそらく激戦区のBattleコードの引用

名前とかhpとかatkはこういう風に定義されてるよって感じ

 

if($gameVariables.value(149)==1){

var a = ["zombie1", "激戦区ゾンビ", 300000, 300000, 15000];

var b = ["zombie2", "激戦区ゾンビ", 300000, 300000, 15000];

var c = ["zombie3", "激戦区ゾンビ", 300000, 300000, 15000];

 

$gameTemp.tempEnemyData = [a, b, c];

$gameTemp.tempEnemyData2 = [49, 528, 100, ActiveTime, 150];

}

else if($gameVariables.value(149)==2){

var a = ["zombie1", "激戦区ゾンビ", 600000, 600000, 25000];

var b = ["zombie2", "激戦区ゾンビ", 600000, 600000, 25000];

var c = ["zombie3", "激戦区ゾンビ", 600000, 600000, 25000];

 

$gameTemp.tempEnemyData = [a, b, c];

$gameTemp.tempEnemyData2 = [61, 537, 100, ActiveTime, 200];

}

else if($gameVariables.value(149)==3){

var a = ["zombie1", "激戦区ゾンビ", 800000, 800000, 35000];

var b = ["zombie2", "激戦区ゾンビ", 800000, 800000, 35000];

var c = ["zombie3", "激戦区ゾンビ", 800000, 800000, 35000];

 

$gameTemp.tempEnemyData = [a, b, c];

$gameTemp.tempEnemyData2 = [66, 537, 100, ActiveTime, 200];

}

 

};

 

Game_System.prototype.removeEnemyDatas_v2 = function() {

$gameTemp.tempEnemyData = null;

$gameTemp.tempEnemyData2= null;

};

 

Game_System.prototype.showEnemyPicture_v2 = function() {

var r = Math.randomInt(3);

var name = "";

if(r == 0){

name = "zombie1";

}

else if(r == 1){

name = "zombie2";

}

else if(r == 2){

name = "zombie3";

}

$gameScreen.showPicture(32, name,   2, 240, 430, 100, 100, 255, 0);

 

r = Math.randomInt(3);

if(r == 0){

name = "zombie1";

}

else if(r == 1){

name = "zombie2";

}

else if(r == 2){

name = "zombie3";

}

$gameScreen.showPicture(33, name,   2, 408, 430, 100, 100, 255, 0);

 

r = Math.randomInt(3);

if(r == 0){

name = "zombie1";

}

else if(r == 1){

name = "zombie2";

}

else if(r == 2){

name = "zombie3";

}

$gameScreen.showPicture(34, name,   2, 576, 430, 100, 100, 255, 0);

};

 

Game_System.prototype.showEnemyPicture_v2_c = function(n) {

var r = Math.randomInt(3);

var name = "";

if(r == 0){

name = "zombie1";

}

else if(r == 1){

name = "zombie2";

}

else if(r == 2){

name = "zombie3";

}

 

var x=0;

var y=430;

 

if(n == 32){

x=240;

}

else if(n == 33){

x=408;

}

else if(n == 34){

x=576;

}

$gameScreen.showPicture(n, name,   2, x, y, 100, 100, 255, 0);

};

 

Game_System.prototype.battleSpeedTimePlus_v2 = function() {

var speed = $gameSystem.finalData[7];

 

if(speed > $gameSystem.finalData[40]){

speed = $gameSystem.finalData[40];

}

if(speed > 900){

speed = 900;

}

$gameTemp.tempEnemyData2[3] += speed;

};

 

Game_System.prototype.attackTurn_v2_enemyAtk = function(n) {

var EnemyAtk  = Math.max($gameTemp.tempEnemyData[n][4] - $gameSystem.finalData[3], 0);

 

this.emitAnimation(19, 400+n*48, 512, false);

 

if($gameSystem.isCurrentWeapon_A() && $gameVariables.value(209)){

if(Math.randomInt(100) < $gameVariables.value(209)*3){

if(EnemyAtk>=2) EnemyAtk = Math.floor(EnemyAtk/2);

}

}

 

ダメージ回避

ダメージを回避の計算式コードの引用

 

if($gameSystem.isCurrentWeapon_C() && $gameVariables.value(215)){

if(Math.randomInt(100) < $gameVariables.value(215)*2){

if(EnemyAtk>0) EnemyAtk = 0;

}

}

 

ゴーレム

if($gameSwitches.value(81)){

EnemyAtk -= this.calcGolemDef($gameSystem.actFriendly[0], $gameParty.numItems($dataItems[901]));

if(EnemyAtk < 0){

EnemyAtk = 0;

}

if($gameSwitches.value(421)){

if(EnemyAtk > 0 && $gameSystem.s1_kakusei_B($gameSystem.actFriendly[0], $gameParty.numItems($dataItems[901]))){

EnemyAtk = 0;

}

}

}

 

バフ:自動ガード

自動ガードの効果計算式の引用

 

if(EnemyAtk > 0 && $gameSystem.PartyBuff[5] > 0 && Math.randomInt(100) < 40){

EnemyAtk = 0;

$gameSystem.losePartyBuff(5, 1);

}

 

$gameSystem.mainData[1]    -= EnemyAtk;

 

踏ん張る

 

踏ん張りの計算式の引用

if($gameSystem.isCurrentWeapon_A() && $gameVariables.value(213)){

if(Math.randomInt(100) < $gameVariables.value(213)*3){

if($gameSystem.mainData[1] <= 0) $gameSystem.mainData[1]=1;

}

}

 

if($gameSystem.mainData[1] < 0){

$gameSystem.mainData[1] = 0;

}

};

 

Game_System.prototype.attackTurn_v2_actorAtk = function() {

var critical = false;

var hitCount = 1;

var exDmg = 0;

 

Hit回数判定

Hit回数判定の引用

if($gameActors.actor(1).equips()[0] && $gameActors.actor(1).equips()[0].meta["Type"] == "敏捷"){

hitCount = Math.randomInt(3+$gameVariables.value(211))+1;

}

if($gameActors.actor(1).equips()[0] && $gameActors.actor(1).equips()[0].meta["Type"] == "集中"){

exDmg = Math.floor($gameSystem.finalData[2] * Math.random()/2);

}

 

クロエJOB

クロエjob計算式の引用

if($gameSystem.actJobData[20] > 0){

if($gameSwitches.value(92) && $gameSwitches.value(412) && $gameParty.numItems($dataItems[912]) >= 2){

if(Math.randomInt(100) < $gameSystem.actJobData[20]*2){

hitCount += 1;

}

}else{

if(Math.randomInt(100) < $gameSystem.actJobData[20]){

hitCount += 1;

}

}

}

 

珠の計算式の引用

if($gameSwitches.value(313)){

hitCount += 1;

}

 

ポイッツァ

ぽイッツアの計算式の引用

if($gameSwitches.value(83)){

exDmg += $gameSystem.calcPoittuaAtk($gameSystem.actFriendly[2], $gameParty.numItems($dataItems[903]));

}

 

火のオーラ

火のオーラの計算式の引用

 

if($gameSwitches.value(452) && $gameParty.hasItem($dataItems[1962])){

$gameParty.gainItemPureNonR($dataItems[1962], -1);

if($gameSwitches.value(452) && !$gameParty.hasItem($dataItems[1962])){

$gameSwitches.setValue(452, false);

}

hitCount += 1;

}

 

クリ判定

クリティカル判定の計算式の引用

 

if(Math.randomInt(100) < $gameSystem.finalData[6]){

critical = true;

this.emitAnimation(20, 408, 288, false);

}else{

this.emitAnimation(20, 408, 288, false);

}

 

Dmg計算

ダメージの計算式の引用

 

var playerAtk = Math.max((($gameSystem.finalData[2]*hitCount)+exDmg), 0);

 

ダメージ補正熟練系

熟練系ダメージ補正の計算式の引用

 

if($gameSystem.isCurrentWeapon_A() && $gameVariables.value(201)){

playerAtk += $gameSystem.calcAddPa(playerAtk, $gameVariables.value(201), 0.03);

}

else if($gameSystem.isCurrentWeapon_B() && $gameVariables.value(202)){

playerAtk += $gameSystem.calcAddPa(playerAtk, $gameVariables.value(202), 0.03);

}

else if($gameSystem.isCurrentWeapon_C() && $gameVariables.value(203)){

playerAtk += $gameSystem.calcAddPa(playerAtk, $gameVariables.value(203), 0.03);

}

else if($gameSystem.isCurrentWeapon_D() && $gameVariables.value(204)){

playerAtk += $gameSystem.calcAddPa(playerAtk, $gameVariables.value(204), 0.03);

}

 

if(critical){

if($gameSystem.PartyBuff && $gameSystem.PartyBuff[4]){

playerAtk *= 5;

$gameSystem.losePartyBuff(4, 1);

}else{

playerAtk *= 2;

}

}

 

うちでの合槌

うちでの合計算式の引用

 

if($gameParty.hasItem($dataItems[1956])){

if($gameSwitches.value(446)){

playerAtk *= 5;

$gameParty.gainItemPure($dataItems[1956], -1);

if(!$gameParty.hasItem($dataItems[1956])){

$gameSwitches.setValue(446, false);

}

}

}else{

if($gameSwitches.value(446)){

$gameSwitches.setValue(446, false);

}

}

 

popUp作成

popup作成の計算式の引用

 

$gameTemp.BattleDamagePopUp = [playerAtk+" ( "+ Math.floor(playerAtk/3) +" ) ", hitCount, 40];

 

$gameTemp.tempEnemyData[0][3] -= Math.floor(playerAtk/3);

$gameTemp.tempEnemyData[1][3] -= Math.floor(playerAtk/3);

$gameTemp.tempEnemyData[2][3] -= Math.floor(playerAtk/3);

 

稀に生き残る

稀に生き残る計算式の引用

 

if($gameTemp.tempEnemyData[0][3] < 0){

if(Math.randomInt(3)==0) $gameTemp.tempEnemyData[0][3] = 1;

}

if($gameTemp.tempEnemyData[1][3] < 0){

if(Math.randomInt(3)==0) $gameTemp.tempEnemyData[1][3] = 1;

}

if($gameTemp.tempEnemyData[2][3] < 0){

if(Math.randomInt(3)==0) $gameTemp.tempEnemyData[2][3] = 1;

}

 

if($gameTemp.tempEnemyData[0][3] < 0){

$gameTemp.tempEnemyData[0][3] = 0;

}

if($gameTemp.tempEnemyData[1][3] < 0){

$gameTemp.tempEnemyData[1][3] = 0;

}

if($gameTemp.tempEnemyData[2][3] < 0){

$gameTemp.tempEnemyData[2][3] = 0;

}

};

 

Game_System.prototype.reviveV2enemy = function(n) {

$gameTemp.tempEnemyData[n][3] = $gameTemp.tempEnemyData[n][2];

};

 

Game_System.prototype.makeGetBattleDrops_v2 = function(n) {

$gameTemp.BattleDropPop = [false, 40, 1,0, 0,0, 0,0];

 

var item = null;

var num = 0;

 

通常

通常についての引用

 

item = $dataItems[1];

num  = $gameTemp.tempEnemyData2[4] + $gameSystem.finalData[8];

 

不死鳥の気

不死鳥の気の引用

 

if($gameParty.hasItem($dataItems[1953])){

if($gameSwitches.value(443)){

num *= 5;

$gameParty.gainItemPure($dataItems[1953], -1);

if(!$gameParty.hasItem($dataItems[1953])){

if(!$gameSwitches.value(644)) $gameSwitches.setValue(443, false);

}

}

}else{

if($gameSwitches.value(443)){

if(!$gameSwitches.value(644)) $gameSwitches.setValue(443, false);

}

}

 

冬にんじん

冬にんじんの計算の引用

 

if($gameParty.hasItem($dataItems[1965])){

if($gameSwitches.value(455)){

num += 5;

if($gameParty.hasExtraNo(344)){

num += 5;

}

$gameParty.gainItemPure($dataItems[1965], -1);

if(!$gameParty.hasItem($dataItems[1965])){

if(!$gameSwitches.value(644)) $gameSwitches.setValue(455, false);

}

}

}else{

if($gameSwitches.value(455)){

if(!$gameSwitches.value(644)) $gameSwitches.setValue(455, false);

}

}

 

$gameParty.gainItem(item, num, false, true);

 

ベル盗む

if($gameSystem.isCurrentWeapon_D() && $gameVariables.value(212)){

$gameParty.gainItemPureNonR($dataItems[2], $gameVariables.value(212));

}

 

小銭泥棒

if($gameSystem.PartyBuff[11] > 0){

$gameParty.gainItemPureNonR($dataItems[2], Math.randomInt(16)+5);

$gameSystem.losePartyBuff(11, 1);

}

 

ぶんどる

if($gameSystem.isCurrentWeapon_D() && $gameVariables.value(216)){

if(Math.randomInt(100) < $gameVariables.value(216)*1){

$gameParty.gainItemPureNonR($dataItems[1956], 1);

}

}

 

通常ドロップ作成

通常ドロップ作成の計算式の引用

 

item = null;

num  = 0;

 

if(Math.randomInt(100) < 100+$gameSystem.finalData[11]){

item = $dataItems[$gameTemp.tempEnemyData2[0]];

num  = $gameSystem.finalData[9];

 

コメント:100-1000まで

num += this.makeExtraDropsNumberA(100+$gameSystem.finalData[11]);

 

コメント:それ以降で熟練対応

num += this.makeExtraDropsNumberB(100+$gameSystem.finalData[11]);

 

if($gameSystem.actJobData[2] > 0){

num += $gameSystem.calcAddPa(num, $gameSystem.actJobData[2], 0.05);

}

 

コメント;フェンリル覚醒

if($gameSwitches.value(89) && $gameSwitches.value(409) && $gameParty.numItems($dataItems[909]) >= 2){

num += 10;

}

 

if(Math.randomInt(100) < Math.floor($gameSystem.actJobData[26]/2)){

num *= 2;

}

 

$gameParty.gainItemPureNonR(item, num);

 

$gameTemp.BattleDropPop[4] = item.id;

$gameTemp.BattleDropPop[5] = num;

}

 

レアドロップ作成

レアドロップ作成の計算式の引用

 

item = null;

num  = 0;

 

if(Math.randomInt(100) < 100+$gameSystem.finalData[12]){

item = $dataItems[$gameTemp.tempEnemyData2[1]];

num  = $gameSystem.finalData[10];

 

コメント;100-1000まで

num += this.makeExtraDropsNumberA(100+$gameSystem.finalData[12]);

 

コメント:それ以降で熟練対応

num += this.makeExtraDropsNumberB(100+$gameSystem.finalData[12]);

 

if($gameSystem.actJobData[9] > 0){

num += $gameSystem.calcAddPa(num, $gameSystem.actJobData[9], 0.06);

}

 

コメント;フェンリル覚醒

if($gameSwitches.value(89) && $gameSwitches.value(429) && $gameParty.numItems($dataItems[909]) >= 3){

num += 10;

}

 

if(Math.randomInt(100) < Math.floor($gameSystem.actJobData[26]/2)){

num *= 2;

}

 

$gameParty.gainItemPureNonR(item, num);

$gameSystem.GameCounts[17] += num;

 

$gameTemp.BattleDropPop[6] = item.id;

$gameTemp.BattleDropPop[7] = num;

}

 

this.makeGetBattleDropsBread_v2();

this.makeGetAnubisWeapon();

this.getJukurenDama();

 

POPUP

if(n == 1){

$gameTemp.BattleDropPop1 = $gameTemp.BattleDropPop.slice(0, $gameTemp.BattleDropPop.length);

}else if(n == 2){

$gameTemp.BattleDropPop2 = $gameTemp.BattleDropPop.slice(0, $gameTemp.BattleDropPop.length);

}else if(n == 3){

$gameTemp.BattleDropPop3 = $gameTemp.BattleDropPop.slice(0, $gameTemp.BattleDropPop.length);

}

$gameTemp.BattleDropPop = null;

};

 

Game_System.prototype.makeGetBattleDropsBread_v2 = function() {

var rate = 1;

 

if($gameSwitches.value(84) && $gameSwitches.value(404) && $gameParty.numItems($dataItems[904]) >= 3){

rate = 2;

}

 

if(Math.randomInt(100) < rate){

AudioManager.playSe({"name":"Sound1","volume":90,"pitch":100,"pan":0});

var rnd = Math.randomInt(5);

if(rnd == 0){

$gameParty.gainItem($dataItems[961], 1);

$gameTemp.BattleDropPop[8] = $dataItems[961];

}

if(rnd == 1){

$gameParty.gainItem($dataItems[962], 1);

$gameTemp.BattleDropPop[8] = $dataItems[962];

}

if(rnd == 2){

$gameParty.gainItem($dataItems[963], 1);

$gameTemp.BattleDropPop[8] = $dataItems[963];

}

if(rnd == 3){

$gameParty.gainItem($dataItems[964], 1);

$gameTemp.BattleDropPop[8] = $dataItems[964];

}

if(rnd == 4){

$gameParty.gainItem($dataItems[965], 1);

$gameTemp.BattleDropPop[8] = $dataItems[965];

}

}

};