バトル関連のソースコード
概要
へなぽこや様が制作したファンデーション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];
}
}
};