npc-relations
Version:
Library with classes to represent simple relations between NPCs.
3 lines (2 loc) • 7.9 kB
JavaScript
function e(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var r=/*#__PURE__*/e(require("limited-int"));function t(e,r){for(var t=0;t<r.length;t++){var i=r[t];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}function i(e,r,i){return r&&t(e.prototype,r),i&&t(e,i),Object.defineProperty(e,"prototype",{writable:!1}),e}function n(e,r){(null==r||r>e.length)&&(r=e.length);for(var t=0,i=new Array(r);t<r;t++)i[t]=e[t];return i}var a,s=/*#__PURE__*/function(){function e(e,t,i){void 0===e&&(e=0),void 0===t&&(t=0),void 0===i&&(i=0),this._friendship=void 0,this._love=void 0,this._sex=void 0,this._friendship=new r.default(e,100,0),this._love=new r.default(t,100,0),this._sex=new r.default(i,100,0)}var t=e.prototype;return t.increaseFriendship=function(e){void 0===e&&(e=1),this._friendship.increase(e)},t.increaseLove=function(e){void 0===e&&(e=1),this._love.increase(e)},t.increaseSex=function(e){void 0===e&&(e=1),this._sex.increase(e)},t.increaseFriendshipPercentage=function(e){this._friendship.increasePercentage(e)},t.increaseLovePercentage=function(e){this._love.increasePercentage(e)},t.increaseSexPercentage=function(e){this._sex.increasePercentage(e)},t.decreaseFriendship=function(e){void 0===e&&(e=1),this._friendship.decrease(e)},t.decreaseLove=function(e){void 0===e&&(e=1),this._love.decrease(e)},t.decreaseSex=function(e){void 0===e&&(e=1),this._sex.decrease(e)},t.decreaseFriendshipPercentage=function(e){this._friendship.decreasePercentage(e)},t.decreaseLovePercentage=function(e){this._love.decreasePercentage(e)},t.decreaseSexPercentage=function(e){this._sex.decreasePercentage(e)},t.copy=function(){return new e(this.friendship,this.love,this.sex)},t.calculatePercentage=function(e,r){return e*r/100},i(e,[{key:"friendship",get:function(){return this._friendship.value},set:function(e){this._friendship.value=e}},{key:"love",get:function(){return this._love.value},set:function(e){this._love.value=e}},{key:"sex",get:function(){return this._sex.value},set:function(e){this._sex.value=e}}]),e}();exports.Familiar=void 0,(a=exports.Familiar||(exports.Familiar={}))[a.None=0]="None",a[a.Parent=1]="Parent",a[a.BrotherOrSister=2]="BrotherOrSister",a[a.SonOrDaughter=3]="SonOrDaughter",a[a.Grandparent=4]="Grandparent",a[a.UncleOrAunt=5]="UncleOrAunt",a[a.NephewOrNiece=6]="NephewOrNiece",a[a.Grandchild=7]="Grandchild",a[a.Cousin=8]="Cousin";var o,c=/*#__PURE__*/function(){function e(){}return e.opposite=function(e){switch(e){case exports.Familiar.Grandparent:return exports.Familiar.Grandchild;case exports.Familiar.BrotherOrSister:return exports.Familiar.BrotherOrSister;case exports.Familiar.SonOrDaughter:return exports.Familiar.Parent;case exports.Familiar.Grandchild:return exports.Familiar.Grandparent;case exports.Familiar.Parent:return exports.Familiar.SonOrDaughter;case exports.Familiar.Cousin:return exports.Familiar.Cousin;case exports.Familiar.NephewOrNiece:return exports.Familiar.UncleOrAunt;case exports.Familiar.UncleOrAunt:return exports.Familiar.NephewOrNiece;default:return exports.Familiar.None}},e}();exports.RelationKind=void 0,(o=exports.RelationKind||(exports.RelationKind={}))[o.Neutral=0]="Neutral",o[o.Friend=1]="Friend",o[o.Enemy=2]="Enemy",o[o.Lover=3]="Lover",o[o.ExLover=4]="ExLover",o[o.Sexy=5]="Sexy",o[o.UnSexy=6]="UnSexy",o[o.Marriaged=7]="Marriaged",o[o.UnMarriaged=8]="UnMarriaged",o[o.Platonic=9]="Platonic",o[o.ExPlatonic=10]="ExPlatonic",o[o.FuckFriend=11]="FuckFriend",o[o.UnFuckEnemy=12]="UnFuckEnemy",o[o.Best=13]="Best",o[o.Worst=14]="Worst",o[o.Frienzoned=15]="Frienzoned",o[o.HatefullSexy=16]="HatefullSexy";var u=/*#__PURE__*/function(){function e(e,r,t,i,n){void 0===i&&(i=exports.Familiar.None),void 0===n&&(n=!1),this._metrics=void 0,this._purity=void 0,this._familiar=void 0,this._metrics=new s(e,r,t),this._familiar=i,n&&(this._purity=new s(e,r,t))}var r=e.prototype;return r.normalize=function(){this.isPure&&(this._metrics.friendship>this._purity.friendship?this._metrics.decreaseFriendship():this._metrics.increaseFriendship(),this._metrics.love>this._purity.love?this._metrics.decreaseLove():this._metrics.increaseLove(),this._metrics.sex>this._purity.sex?this._metrics.decreaseSex():this._metrics.increaseSex())},r.copy=function(){return new e(this._metrics.friendship,this._metrics.love,this._metrics.sex,this._familiar,this.isPure)},i(e,[{key:"metrics",get:function(){return this._metrics}},{key:"familiarity",get:function(){return this._familiar}},{key:"ponderatedValue",get:function(){return(this.metrics.friendship+this.metrics.love+this.metrics.sex)/3}},{key:"isPonderatedGood",get:function(){return this.ponderatedValue>55}},{key:"isPonderatedBad",get:function(){return this.ponderatedValue<45}},{key:"isPonderatedNeutral",get:function(){var e=this.ponderatedValue;return e>=45&&e<=55}},{key:"isFamiliar",get:function(){return this._familiar!==exports.Familiar.None}},{key:"isFriend",get:function(){return this._metrics.friendship>60}},{key:"isLover",get:function(){return this._metrics.love>60}},{key:"isSexy",get:function(){return this._metrics.sex>60}},{key:"isEnemy",get:function(){return this._metrics.friendship<40}},{key:"isExlover",get:function(){return this._metrics.love<40}},{key:"isAntisexy",get:function(){return this._metrics.sex<40}},{key:"isPure",get:function(){return void 0!==this._purity}}]),e}(),l=/*#__PURE__*/function(){function e(){}return e.get=function(e,r,t){void 0===r&&(r=exports.Familiar.None),void 0===t&&(t=!1);var i=50,n=50,a=50;switch(e){case exports.RelationKind.Friend:i=90;break;case exports.RelationKind.Enemy:i=10;break;case exports.RelationKind.Lover:n=90;break;case exports.RelationKind.ExLover:n=10;break;case exports.RelationKind.Sexy:a=90;break;case exports.RelationKind.UnSexy:a=10;break;case exports.RelationKind.Marriaged:i=90,n=90;break;case exports.RelationKind.UnMarriaged:i=10,n=10;break;case exports.RelationKind.Platonic:n=90,a=90;break;case exports.RelationKind.ExPlatonic:n=10,a=10;break;case exports.RelationKind.FuckFriend:i=90,a=90;break;case exports.RelationKind.UnFuckEnemy:i=10,a=10;break;case exports.RelationKind.Best:i=90,n=90,a=90;break;case exports.RelationKind.Worst:i=10,n=10,a=10;break;case exports.RelationKind.Frienzoned:i=90,a=10;break;case exports.RelationKind.HatefullSexy:i=10,a=90}return new u(i,n,a,r,t)},e}(),d=/*#__PURE__*/function(){function e(){this._relations=void 0,this._relations=new Map}var r=e.prototype;return r.add=function(e,r){this._relations.set(e,r)},r.append=function(e,r){return this._relations.set(e,r),this},r.knows=function(e){return this._relations.has(e)},r.get=function(e){if(this._relations.has(e))return this._relations.get(e);var r=l.get(exports.RelationKind.Neutral);return this._relations.set(e,r),r},r.normalizeAll=function(){this._relations.forEach(function(e){return e.normalize()})},r.copy=function(){for(var r,t=new e,i=function(e,r){var t="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(t)return(t=t.call(e)).next.bind(t);if(Array.isArray(e)||(t=function(e,r){if(e){if("string"==typeof e)return n(e,r);var t=Object.prototype.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?n(e,r):void 0}}(e))){t&&(e=t);var i=0;return function(){return i>=e.length?{done:!0}:{done:!1,value:e[i++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(this._relations.keys());!(r=i()).done;){var a=r.value;t.add(a,this._relations.get(a))}return t},i(e,[{key:"knowns",get:function(){return Array.from(this._relations.keys())}}]),e}();exports.FamiliarDomain=c,exports.Relation=u,exports.RelationFactory=l,exports.RelationMetrics=s,exports.RelationSet=d;
//# sourceMappingURL=index.js.map