//=============================================================================
// AnimatedSVEnemies.js
// Version: 1.16a - The Re-Remake
//=============================================================================
var Imported = Imported || {};
Imported.AnimatedSVEnemies = true;
var Rexal = Rexal || {};
Rexal.ASVE = Rexal.ASVE || {};
/*:
* @plugindesc 版本:1.16——Re-Remake
*——让敌人动画!
* @author Rexal
*
* @param Debug
* @desc 登录到控制台(F8)?
* @default true
* @param No Movement
* @desc 执行操作时防止敌人移动。
* @default false
* @param Enemies Celebrate
* @desc 敌人将庆祝你的灭亡。
* @default true
* @param SV Enemies Collapse
* @desc 所有SV敌人死后将会崩溃。
* @default false
* @param Static Enemies Breathe
* @desc 静态的敌人有呼吸的影响
* @default true
* @param AGI Effects Breathing
* @desc 静态敌人更高播洒统计会呼吸得更快。
* @default true
* @param Scale Statics by Distance
* @desc 静态的敌人会在后台较小的越远
* @default true
* @param Damage Slows Down Breathing
* @desc 呼吸减慢了更大的伤害
* @default true
* @help
--------------------------------------------------------------------------------
Notetags
================================================================================
---------------------------[SV Battlers]---------------------------------
[SV Animated]
-集敌人使用SV演员雪碧。这些都是位于sv_actors
文件夹中。确保有一个精灵,文件夹名称相匹配
你用敌人的形象。
[Collapse]
- 让SV敌人使用崩溃动画不管参数设置。
[No Collapse]
- 阻止SV敌人使用崩溃动画无论参数设置。
SV Motion: motion
-集敌人攻击时使用这种运动。如果你不知道什么运动
您可以使用,请参考运动列表底部的帮助部分。
SV Weapon: id
- “装备”这种武器的敌人。
Ex: SV Weapon: 1
SV Weapon Scale: amount
增加武器的大小相同的量。
SV Weapon Anchor: x,y
设置武器的锚点。
Ex. SV Weapon Anchor: .5,1
SV Anchor: x,y
集战斗者的锚点。
Ex. SV Anchor: .5,1
----------------------------[Static Battlers]---------------------------------
[Breathless]
-这个敌人不呼吸。有用的魔像和邪恶的墙壁。
[Float]
吹嘘的有一个浮动的效果类似于rm2k3的敌人。
呼吸控制:speedScale xScale yScale
集的速度正弦波,多少次的雪碧的大小
允许去width-wise height-wise。
你要尝试直到它看起来正常一点的值。的
下面的例子是默认设置。
Ex: Breath Control: 50,5,25
-----------------------------------[Both]---------------------------------------
Enemy Scale: amount
增加了敌人的大小相同的量。
--------------------------------------------------------------------------------
Version Log
================================================================================
v1 -初始版本
v1.05——许多修复
——固定问题的敌人不打正确的动画,不止一个
敌人是在屏幕上。
- Misc。修复,我忘记了。
——添加SV武器,它可以让你发挥武器动画(目前向后)。
这是我其他不兼容脚本:精灵武器增强。
添加了一个参数,阻止敌人移动。
v1.075——深呼吸
——静态的敌人现在呼吸!
——添加很多东西来控制呼吸。(notetags不工作!)
v1.08——固定呼吸
——呼吸notetags工作现在!耶!
——添加(浮动)
v1.1——生活和重新加载
呼吸减慢惠普敌人越少。(及他们只是呼吸更少)
——添加一个选项,让敌人规模进一步分成背景。
——固定武器!
——敌人可以庆祝你的灭亡。
——固定Flash目标错误。
- SV敌人可以崩溃。
- SV敌人将正确地出现
——敌人有适当的逃脱动画。
——敌人现在正确定位。
——你现在可以规模敌人无论你想要的。
v1.101 -
——添加一个参数,以防止敌人呼吸慢更大的伤害。
v1.11 -
——固定定位。对不起!
v1.111 -
——没有发表评论。
v1.113 -
固定武器。
v1.12 -
——完全重写脚本的关键部分。
——请注意标签不再是区分大小写的。
——正式固定定位。
——固定流动问题。
v1.15——Re-Remake
——大规模清理,应该让它更兼容。
v1.15.1 -
还伤害数字没有出现问题。
v1.15.3
固定一些东西。
v1.15.5
员工的一些东西。= m =
v1.15.5.1
应该更兼容的东西
v1.16a
- - -
——一般改进
——添加SV雪碧
——改变了武器的处理方式。
--------------------------------------------------------------------------------
Motion List
================================================================================
walk -准备好了动画
wait - 空闲动画
chant -魔法动画做好了准备
guard - 警卫动画
damage - 伤害的动画
evade -逃避动画
thrust - 刺动画
swing - 摆动的动画
missile - 射击动画
skill - 物理技能使用动画
spell - 神奇的技能使用动画
item - 道具使用动画
escape - 逃避动画
victory - 胜利的动画
dying - 危险”动画
abnormal - 异常的影响
sleep - 睡觉的动画
dead - 死动画
*/
Rexal.ASVE.Parameters = PluginManager.parameters('animatedSVEnemies');
Rexal.ASVE.Debug = eval(String(Rexal.ASVE.Parameters['Debug']));
Rexal.ASVE.NoMovement = eval(String(Rexal.ASVE.Parameters['No Movement']));
Rexal.ASVE.Breathe = eval(String(Rexal.ASVE.Parameters['Static Enemies Breathe']));
Rexal.ASVE.AGIB = eval(String(Rexal.ASVE.Parameters['AGI Effects Breathing']));
Rexal.ASVE.Celebration = eval(String(Rexal.ASVE.Parameters['Enemies Celebrate']));
Rexal.ASVE.DoCollapse = eval(String(Rexal.ASVE.Parameters['SV Enemies Collapse']));
Rexal.ASVE.DamageSlow = eval(String(Rexal.ASVE.Parameters['Damage Slows Down Breathing']));
Rexal.ASVE.ScaleStatics = eval(String(Rexal.ASVE.Parameters['Scale Statics by Distance']));
//-----------------------------------------------------------------------------
//Original Functions Storage
//=============================================================================
Rexal.ASVE.Game_Enemy_makeActions = Game_Enemy.prototype.makeActions;
Rexal.ASVE.Game_Enemy_performDamage = Game_Enemy.prototype.performDamage;
Rexal.ASVE.Sprite_Enemy_updateBitmap = Sprite_Enemy.prototype.updateBitmap;
Rexal.ASVE.seupdateappear = Sprite_Enemy.prototype.updateAppear;
Rexal.ASVE.processDefeat = BattleManager.processDefeat;
Rexal.ASVE.spriteactorupdatebitmap = Sprite_Actor.prototype.updateBitmap;
Rexal.ASVE.setupweaponanimation = Sprite_Actor.prototype.setupWeaponAnimation;
Rexal.ASVE.setactorhome = Sprite_Actor.prototype.setActorHome;
//-----------------------------------------------------------------------------
// BattleManager
//=============================================================================
if(Rexal.ASVE.Celebration)
{
BattleManager.processDefeat = function() {
Rexal.ASVE.processDefeat.call(this);
if(Rexal.ASVE.Celebration)$gameTroop.performVictory();
};
}
//-----------------------------------------------------------------------------
// Game_Enemy
//=============================================================================
Game_Enemy.prototype.weapons = function() {
var item = this._equips[0];
return [item && DataManager.isWeapon(item)];
};
Game_Enemy.prototype.hasWeapon = function(weapon) {
return this._equips[0];
};
Game_Enemy.prototype.performAttack = function() {
if(this._equips[0])
Game_Actor.prototype.performAttack.call(this);
else
{
this.requestMotion(this._motion);
}
};
Game_Enemy.prototype.attackAnimationId1 = function() {
Game_Actor.prototype.attackAnimationId1.call(this);
};
Game_Enemy.prototype.attackAnimationId2 = function() {
Game_Actor.prototype.attackAnimationId2.call(this);
};
Game_Enemy.prototype.bareHandsAnimationId = function() {
Game_Actor.prototype.bareHandsAnimationId.call(this);
};
Game_Enemy.prototype.hasNoWeapons = function() {
Game_Actor.prototype.hasNoWeapons.call(this);
}
Game_Enemy.prototype.performAction = function(action) {
Game_Actor.prototype.performAction.call(this,action);
};
Game_Enemy.prototype.performDamage = function() {
Rexal.ASVE.Game_Enemy_performDamage.call(this);
this.requestMotion('damage');
};
Game_Enemy.prototype.actor = function() {
return $dataEnemies[this._enemyId];
};
Game_Enemy.prototype.performEvasion = function() {
Game_Battler.prototype.performEvasion.call(this);
this.requestMotion('evade');
};
Game_Enemy.prototype.performMagicEvasion = function() {
Game_Battler.prototype.performMagicEvasion.call(this);
this.requestMotion('evade');
};
Game_Enemy.prototype.performCounter = function() {
Game_Battler.prototype.performCounter.call(this);
this.performAttack();
};
Game_Enemy.prototype.performVictory = function() {
if (this.canMove()) {
this.requestMotion('victory');
}
};
Game_Enemy.prototype.makeActions = function() {
Rexal.ASVE.Game_Enemy_makeActions.call(this);
this.setActionState('undecided');
};
Game_Enemy.prototype.performEscape = function() {
if (this.canMove()) {
this.requestMotion('escape');
}
};
//-----------------------------------------------------------------------------
// Game_Troop
//=============================================================================
Game_Troop.prototype.performVictory = function() {
this.members().forEach(function(enemy) {
enemy.performVictory();
});
};
//-----------------------------------------------------------------------------
// Sprite_Enemy
//=============================================================================
Sprite_Enemy.prototype.setBattler = function(battler) {
Sprite_Battler.prototype.setBattler.call(this, battler);
this._random = [Math.random()*1000000,Math.random()*1000000,Math.random()*1000000];
this._enemy = battler;
this.setHome(battler.screenX(), battler.screenY());
this._stateIconSprite.setup(battler);
};
Sprite_Enemy.prototype.updateBitmap = function() {
Rexal.ASVE.Sprite_Enemy_updateBitmap.call(this);
if(!this._enemy._breathless && Rexal.ASVE.Breathe){
var a = 1;
if(Rexal.ASVE.AGIB) a = this._enemy.agi/100+1;
var breathS = this._enemy._breath[0]/1000;
var bx = (Graphics.frameCount+this._random[0]);
var by = (Graphics.frameCount+this._random[1]);
if(Rexal.ASVE.DamageSlow) breathS *= (this._enemy.hp/this._enemy.mhp)+.1;
var breathY = Math.cos(bx*breathS*a)*(this._enemy._breath[2]/1000);
var breathX = Math.cos(by*breathS)*(this._enemy._breath[1]/1000);
if(Rexal.ASVE.DamageSlow)breathY *= (this._enemy.hp/this._enemy.mhp);
var ss = Graphics.boxHeight/624+.1;
if(Rexal.ASVE.ScaleStatics)var s = ss*(this._homeY/Graphics.boxHeight)*this._enemy._scale;
else var s = this._enemy._scale;
this.smooth = true;
this.scale.y = s+breathY;
this.scale.x = s+breathX;
}
if(this._enemy._floating && !this.isBusy)
{
var f = Math.cos(Graphics.frameCount/50+this._random[2]*a)*20*a;
this.setHome(this._enemy.screenX(),this._enemy.screenY()+f);
}
};
var sesf = Sprite_Enemy.prototype.stepForward;
Sprite_Enemy.prototype.stepForward = function() {
if(!Rexal.ASVE.NoMovement) sesf.call(this);
};
var sesh = Sprite_Enemy.prototype.setHome;
Sprite_Enemy.prototype.setHome = function(x,y) {
sesh.call(this,x,y);
var dX = Graphics.boxWidth/816;
var dY = Graphics.boxHeight/624;
y*= dY;
x*= dX;
this._homeX = x;
this._homeY = y + (Graphics.boxHeight - 624)/3;
this.updatePosition();
};
//-----------------------------------------------------------------------------
// Sprite_EnemyRex
//=============================================================================
function Sprite_EnemyRex() {
this.initialize.apply(this, arguments);
}
Sprite_EnemyRex.prototype = Object.create(Sprite_Actor.prototype);
Sprite_EnemyRex.prototype.constructor = Sprite_EnemyRex;
Sprite_EnemyRex.prototype.loadBitmap = function(name, hue) {
if(this._actor._battleSprite != "")name = this._battleSprite;
this.bitmap = ImageManager.loadSvActor(name,hue);
};
Sprite_EnemyRex.prototype.setBattler = function(battler) {
// this._enemySprite = new Sprite_Enemy(battler);
// this._enemySprite._homeX = 0;
// this._enemySprite._homeY = 0;
Sprite_Battler.prototype.setBattler.call(this, battler);
//this.addChild(this._enemySprite);
var changed = (battler !== this._actor);
if (changed) {
this._actor = battler;
this._enemy = battler;
if (battler) {
this.setActorHome(battler);
}
this.startEntryMotion();
this._stateSprite.setup(battler);
}
};
Sprite_EnemyRex.prototype.updateBitmap = function() {
Rexal.ASVE.spriteactorupdatebitmap.call(this);
this.updateEffect();
var hue = this._actor.battlerHue();
var name = this._actor.battlerName();
if(this._actor._battleSprite)name = this._actor._battleSprite;
this._mainSprite.bitmap = ImageManager.loadSvActor(name,hue);
this._mainSprite.anchor.x = this._actor._anchor[0];
this._mainSprite.anchor.y = this._actor._anchor[1];
this.flipChildren();
};
Sprite_EnemyRex.prototype.flipChildren = function(){
for(var i = 0; i<this.children.length; i++)
{
if(this.children[i].scale.x!=-this._actor._scale)this.children[i].scale.x = -this._actor._scale;
if(this.children[i].scale.y!=this._actor._scale) this.children[i].scale.y = this._actor._scale;
}
}
Sprite_EnemyRex.prototype.setupWeaponAnimation = function() {
Rexal.ASVE.setupweaponanimation.call(this);
if(!this._weaponSprite._positioned)
{
var scale = this._actor._scale+this._actor._weaponScale;
this._weaponSprite.x = -this._weaponSprite.x*scale;
this._weaponSprite.anchor.x = this._actor._weaponAnchor[0];
this._weaponSprite.anchor.y = this._actor._weaponAnchor[1];
this._weaponSprite._positioned = true;
}
};
Sprite_EnemyRex.prototype.setActorHome = function(battler) {
Rexal.ASVE.setactorhome.call(this);
var dX = Graphics.boxWidth/816;
var dY = Graphics.boxHeight/624;
var x = battler.screenX()*dX;
var y = battler.screenY()*dY;
this._homeX = x;
this._homeY = y + (Graphics.boxHeight - 624)/3;
this.updatePosition();
};
Sprite_EnemyRex.prototype.stepForward = function() {
if(!Rexal.ASVE.NoMovement) this.startMove(48, 0, 12);
};
Sprite_EnemyRex.prototype.stepBack = function() {
if(!Rexal.ASVE.NoMovement) this.startMove(0, 0, 12);
};
Sprite_EnemyRex.prototype.retreat = function() {
this.startMove(300, 0, 30);
};
Sprite_EnemyRex.prototype.initVisibility = function() {
this._appeared = this._actor.isAlive();
if (!this._appeared) {
this.opacity = 0;
}
};
Sprite_EnemyRex.prototype.setupEffect = function() {
this._enemy = this._actor;
Sprite_Enemy.prototype.setupEffect.call(this);
};
Sprite_EnemyRex.prototype.startEffect = function(effectType) {
this._effectType = effectType;
switch (this._effectType) {
case 'appear':
this.startAppear();
break;
case 'disappear':
this.startDisappear();
break;
case 'whiten':
this.startWhiten();
break;
case 'collapse':
if(this._actor._collapse) this.startCollapse();
break;
case 'bossCollapse':
this.startBossCollapse();
break;
case 'instantCollapse':
this.startInstantCollapse();
break;
}
this.revertToNormal();
};
Sprite_EnemyRex.prototype.startAppear = function() {
Sprite_Enemy.prototype.startAppear.call(this);
};
Sprite_EnemyRex.prototype.startDisappear = function() {
Sprite_Enemy.prototype.startDisappear.call(this);
};
Sprite_EnemyRex.prototype.startWhiten = function() {
Sprite_Enemy.prototype.startWhiten.call(this);
};
Sprite_EnemyRex.prototype.startBlink = function() {
Sprite_Enemy.prototype.startBlink.call(this);
};
Sprite_EnemyRex.prototype.startCollapse = function() {
Sprite_Enemy.prototype.startCollapse.call(this);
};
Sprite_EnemyRex.prototype.startBossCollapse = function() {
Sprite_Enemy.prototype.startBossCollapse.call(this);
};
Sprite_EnemyRex.prototype.startInstantCollapse = function() {
Sprite_Enemy.prototype.startInstantCollapse.call(this);
};
Sprite_EnemyRex.prototype.updateEffect = function() {
this.setupEffect();
if (this._effectDuration > 0) {
this._effectDuration--;
switch (this._effectType) {
case 'whiten':
this.updateWhiten();
break;
case 'appear':
this.updateAppear();
break;
case 'disappear':
this.updateDisappear();
break;
case 'collapse':
if(this._actor._collapse) this.updateCollapse();
break;
case 'bossCollapse':
if(this._actor._collapse) this.updateBossCollapse();
break;
case 'instantCollapse':
if(this._actor._collapse) this.updateInstantCollapse();
break;
}
if (this._effectDuration === 0) {
this._effectType = null;
}
}
};
Sprite_EnemyRex.prototype.isEffecting = function() {
Sprite_Enemy.prototype.isEffecting.call(this);
};
Sprite_EnemyRex.prototype.revertToNormal = function() {
Sprite_Enemy.prototype.revertToNormal.call(this);
};
Sprite_EnemyRex.prototype.updateWhiten = function() {
Sprite_Enemy.prototype.updateWhiten.call(this);
};
Sprite_EnemyRex.prototype.updateBlink = function() {
Sprite_Enemy.prototype.updateBlink.call(this);
};
Rexal.ASVE.seupdateappear = Sprite_Enemy.prototype.updateAppear;
Sprite_Enemy.prototype.updateAppear = function() {
Rexal.ASVE.seupdateappear.call(this);
this.setHome(this._homeX,this._homeY);
};
Rexal.ASVE.seupdatedisappear = Sprite_Enemy.prototype.updateDisappear;
Sprite_Enemy.prototype.updateDisappear = function() {
Rexal.ASVE.seupdatedisappear.call(this);
this.setHome(this._homeX-10,this._homeY);
};
Sprite_EnemyRex.prototype.updateAppear = function() {
Sprite_Enemy.prototype.updateAppear.call(this);
};
Sprite_EnemyRex.prototype.updateDisappear = function() {
Sprite_Enemy.prototype.updateDisappear.call(this);
};
Sprite_EnemyRex.prototype.updateCollapse = function() {
Sprite_Enemy.prototype.updateCollapse.call(this);
};
Sprite_EnemyRex.prototype.updateBossCollapse = function() {
Sprite_Enemy.prototype.updateBossCollapse.call(this);
};
Sprite_EnemyRex.prototype.updateInstantCollapse = function() {
Sprite_Enemy.prototype.updateInstantCollapse.call(this);
};
//-----------------------------------------------------------------------------
// Spriteset_Battle
//=============================================================================
Spriteset_Battle.prototype.createEnemies = function() {
var enemies = $gameTroop.members();
var sprites = [];
for (var i = 0; i < enemies.length; i++) {
var enemy = enemies[i];
var baseEnemy = $dataEnemies[enemies[i].enemyId()];
Rexal.ASVE.processEnemyNoteTag(baseEnemy);
Rexal.ASVE.processEnemyData(enemy,baseEnemy);
if(enemy._animated)
{
sprites[i] = new Sprite_EnemyRex(enemies[i]);
sprites[i].opacity = 0;
}
else
sprites[i] = new Sprite_Enemy(enemies[i]);
}
sprites.sort(this.compareEnemySprite.bind(this));
for (var j = 0; j < sprites.length; j++) {
this._battleField.addChild(sprites[j]);
}
this._enemySprites = sprites;
};
//-----------------------------------------------------------------------------
// Rex Functions
//=============================================================================
Object.defineProperties(Game_Enemy.prototype, {
animated: { get: function() { return this._animated; }, configurable: true },
weapon: { get: function() { return this._weapon; }, configurable: true },
sprite: { get: function() { return this._battleSprite; }, configurable: true },
motion: { get: function() { return this._motion; }, configurable: true },
weaponid: { get: function() { return this._weaponId; }, configurable: true },
breathless: { get: function() { return this._breathless; }, configurable: true },
floating: { get: function() { return this._float; }, configurable: true },
scale: { get: function() { return this._scale; }, configurable: true },
weaponscale: { get: function() { return this._weaponscale; }, configurable: true },
weaponanchor: { get: function() { return this._weaponanchor; }, configurable: true },
anchor: { get: function() { return this._anchor; }, configurable: true },
collapse: { get: function() { return this._collapse; }, configurable: true },
breath: { get: function() { return this._breath; }, configurable: true }
});
Rexal.log = function(message,type){
if(!Rexal.ASVE.Debug) return;
if(!type) type = 'log';
switch (type) {
case 'log' :
console.log(message);
break;
case 'info' :
console.debug(message);
break;
case 'warn' :
console.warn(message);
break;
case 'error' :
console.error(message);
break;
}
}
Rexal.ASVE.processEnemyData = function(obj,obj2) {
if(!obj._equips)obj._equips = [];
if(obj2.weapon){ obj._equips[0] = new Game_Item();
obj._equips[0].setObject(obj2.weapon);}
obj._breath = [];
obj._weaponAnchor = [];
obj._anchor = [];
obj._animated = obj2.animated;
obj._battleSprite = obj2.battleSprite;
obj._motion = obj2.motion;
obj._weaponId = obj2.weaponid;
obj._breathless = obj2.breathless;
obj._floating = obj2.floating;
obj._scale = obj2.scale;
obj._breath[0] = obj2.breath[0];
obj._breath[1] = obj2.breath[1];
obj._breath[2] = obj2.breath[2];
obj._collapse = obj2.collapse;
obj._weaponScale = obj2.weaponscale;
obj._weaponAnchor = obj2.weaponanchor;
obj._anchor = obj2.anchor;
}
Rexal.ASVE.processEnemyNoteTag = function(obj) {
Rexal.log('reading ' + obj.name + '...');
obj.battleSprite = "";
obj.motion = 'thrust';
obj.collapse = Rexal.ASVE.DoCollapse;
obj.breath = [50,5,25];
obj.scale = 1.0;
obj.weaponscale = 0.0;
obj.weaponanchor = [.5,1];
obj.anchor = [.5,1];
if(obj == null)return;
var notedata = obj.note.split(/[\r\n]+/);
for (var i = 0; i < notedata.length; i++) {
var line = notedata[i];
var lines = line.split(': ');
switch (lines[0].toLowerCase()) {
case '[sv animated]' :
obj.animated = true;
Rexal.log(obj.name + ' is using SV Battler sprites','info');
break;
case 'sv sprite' :
obj.animated = true;
obj.battleSprite = lines[1];
Rexal.log(obj.name + ' is using SV Battler sprites','info');
break;
case 'sv motion' :
obj.motion = lines[1].toLowerCase();
Rexal.log(obj.name + "'s attack motion is:" + obj.motion,'info');
break;
case 'sv weapon' :
obj.weapon = $dataWeapons[parseInt(lines[1])] ;
Rexal.log(obj.weapon);
break;
case '[breathless]' :
obj.breathless = true;
Rexal.log(obj.name + " is breathless.",'info');
break;
case '[float]' :
obj.floating = true;
Rexal.log(obj.name + " floats.",'info');
break;
case '[collapse]' :
obj.collapse = true;
Rexal.log(obj.name + " can collapse.",'info');
break;
case '[no collapse]' :
obj.collapse = false;
Rexal.log(obj.name + " cannot collapse.",'info');
break;
case 'breath control' :
var lines2 = lines[1].split(',');
obj.breath[0] = parseInt(lines2[0]);
obj.breath[1] = parseInt(lines2[1]);
obj.breath[2] = parseInt(lines2[2]);
Rexal.log(obj.name + "'s breath control: " + obj.breath,'info');
break;
case 'enemy scale' :
obj.scale = parseFloat(lines[1]);
Rexal.log(obj.name + " is " + obj.scale +"x bigger than normal.",'info');
break;
case 'sv weapon scale' :
obj.weaponscale = parseFloat(lines[1])-1;
Rexal.log(obj.name + "'s weapon is " + obj.scale +"x bigger than normal.",'info');
break;
case 'sv weapon anchor' :
var lines2 = lines[1].split(',');
obj.weaponanchor[0] = parseFloat(lines2[0]);
obj.weaponanchor[1] = parseFloat(lines2[1]);
Rexal.log(obj.name + "'s weapon is anchored to " + obj.weaponanchor[0] +" and " + obj.weaponanchor[1],'info');
break;
case 'sv anchor' : //WIP
var lines2 = lines[1].split(',');
obj.anchor[0] = parseFloat(lines2[0]);
obj.anchor[1] = parseFloat(lines2[1]);
Rexal.log(obj.name + " is anchored to " + obj.anchor[0] +" and " + obj.anchor[1],'info');
break;
}
}
return obj;
};