mirror of
https://github.com/OMGeeky/andors-trail.git
synced 2026-01-17 09:07:49 +01:00
git-svn-id: https://andors-trail.googlecode.com/svn/trunk@83 08aca716-68be-ccc6-4d58-36f5abd142ac
74 lines
2.9 KiB
JavaScript
74 lines
2.9 KiB
JavaScript
|
|
function createMonsterEditor(obj) {
|
|
if (!obj.maxAP) { obj.maxAP = 10; }
|
|
if (!obj.size) { obj.size = "1x1"; }
|
|
|
|
var div = $( "#templates #editMonster" ).clone();
|
|
applyCommonEditorBindings(div, obj, model.monsters);
|
|
checkboxHidesElement(div.find('#hasConversation'), div.find('#hasConversationDisplay'), obj.phraseID);
|
|
checkboxHidesElement(div.find('#hasCombat'), div.find('#hasCombatDisplay'), obj.attackChance);
|
|
checkboxHidesElement(div.find('#hasCritical'), div.find('#hasCriticalDisplay'), obj.criticalChance || obj.criticalMultiplier);
|
|
checkboxHidesElement(div.find('#hasHitEffect'), div.find('#hasHitEffectDisplay'), obj.hasHitEffect);
|
|
imageSelector.imageify(div.find('#monsterimage'), div.find('#iconID'), 'monsters');
|
|
bindFieldToDataStore( $( "#droplistID", div ), model.droplists );
|
|
|
|
var createNewCondition = function() { return { chance: 100, magnitude: 1 }; }
|
|
if (!obj.onHit_conditionsSource) obj.onHit_conditionsSource = [];
|
|
if (!obj.onHit_conditionsTarget) obj.onHit_conditionsTarget = [];
|
|
var setupEditor = function(div) {
|
|
bindFieldToDataStore( $( "#condition", div ), model.actorConditions );
|
|
}
|
|
applyTableEditor({
|
|
table: $( "#onHit_conditionsSource", div ),
|
|
dialog: onHitConditionsDialog,
|
|
array: obj.onHit_conditionsSource,
|
|
templateFunction: createNewCondition,
|
|
editorSetup: setupEditor
|
|
});
|
|
applyTableEditor({
|
|
table: $( "#onHit_conditionsTarget", div ),
|
|
dialog: onHitConditionsDialog,
|
|
array: obj.onHit_conditionsTarget,
|
|
templateFunction: createNewCondition,
|
|
editorSetup: setupEditor
|
|
});
|
|
|
|
var expDependsOn = [];
|
|
var div100 = function(v) { return v / 100; }
|
|
var v = function(s) {
|
|
var field = $( s, div );
|
|
expDependsOn.push(field);
|
|
var val = field.val();
|
|
if (!val) return 0;
|
|
return parseInt(val);
|
|
}
|
|
var updateExperience = function() {
|
|
/*
|
|
final float avgAttackHP = t.getAttacksPerTurn(maxAP) * div100(t.attackChance) * t.damagePotential.averagef() * (1 + div100(t.criticalChance) * t.criticalMultiplier);
|
|
final float avgDefenseHP = maxHP * (1 + div100(t.blockChance)) + Constants.EXP_FACTOR_DAMAGERESISTANCE * t.damageResistance;
|
|
return (int) Math.ceil((avgAttackHP * 3 + avgDefenseHP) * Constants.EXP_FACTOR_SCALING);
|
|
*/
|
|
|
|
expDependsOn = [];
|
|
|
|
var EXP_FACTOR_DAMAGERESISTANCE = 9;
|
|
var EXP_FACTOR_SCALING = 0.7;
|
|
|
|
var attacksPerTurn = Math.floor(v("#maxAP") / v("#attackCost"));
|
|
var avgDamagePotential = (v("#attackDamage_Min") + v("#attackDamage_Max")) / 2;
|
|
var avgAttackHP = attacksPerTurn * div100(v("#attackChance")) * avgDamagePotential * (1 + div100(v("#criticalChance")) * v("#criticalMultiplier"));
|
|
var avgDefenseHP = v("#maxHP") * (1 + div100(v("#blockChance"))) + EXP_FACTOR_DAMAGERESISTANCE * v("#damageResistance");
|
|
var experience = (avgAttackHP * 3 + avgDefenseHP) * EXP_FACTOR_SCALING;
|
|
|
|
$( "#experience", div ).val(Math.ceil(experience));
|
|
};
|
|
|
|
updateExperience();
|
|
jQuery.each(expDependsOn, function(idx, o) {
|
|
o.change(updateExperience);
|
|
});
|
|
|
|
return div;
|
|
}
|
|
|