UNPKG

npc-relations

Version:

Library with classes to represent simple relations between NPCs.

3 lines (2 loc) 7.84 kB
!function(e,i){"object"==typeof exports&&"undefined"!=typeof module?i(exports,require("limited-int")):"function"==typeof define&&define.amd?define(["exports","limited-int"],i):i((e||self).npcRelations={},e.limitedInt)}(this,function(e,i){function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=/*#__PURE__*/t(i);function r(e,i){for(var t=0;t<i.length;t++){var n=i[t];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function a(e,i,t){return i&&r(e.prototype,i),t&&r(e,t),Object.defineProperty(e,"prototype",{writable:!1}),e}function s(e,i){(null==i||i>e.length)&&(i=e.length);for(var t=0,n=new Array(i);t<i;t++)n[t]=e[t];return n}var o,c=/*#__PURE__*/function(){function e(e,i,t){void 0===e&&(e=0),void 0===i&&(i=0),void 0===t&&(t=0),this._friendship=void 0,this._love=void 0,this._sex=void 0,this._friendship=new n.default(e,100,0),this._love=new n.default(i,100,0),this._sex=new n.default(t,100,0)}var i=e.prototype;return i.increaseFriendship=function(e){void 0===e&&(e=1),this._friendship.increase(e)},i.increaseLove=function(e){void 0===e&&(e=1),this._love.increase(e)},i.increaseSex=function(e){void 0===e&&(e=1),this._sex.increase(e)},i.increaseFriendshipPercentage=function(e){this._friendship.increasePercentage(e)},i.increaseLovePercentage=function(e){this._love.increasePercentage(e)},i.increaseSexPercentage=function(e){this._sex.increasePercentage(e)},i.decreaseFriendship=function(e){void 0===e&&(e=1),this._friendship.decrease(e)},i.decreaseLove=function(e){void 0===e&&(e=1),this._love.decrease(e)},i.decreaseSex=function(e){void 0===e&&(e=1),this._sex.decrease(e)},i.decreaseFriendshipPercentage=function(e){this._friendship.decreasePercentage(e)},i.decreaseLovePercentage=function(e){this._love.decreasePercentage(e)},i.decreaseSexPercentage=function(e){this._sex.decreasePercentage(e)},i.copy=function(){return new e(this.friendship,this.love,this.sex)},i.calculatePercentage=function(e,i){return e*i/100},a(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}();e.Familiar=void 0,(o=e.Familiar||(e.Familiar={}))[o.None=0]="None",o[o.Parent=1]="Parent",o[o.BrotherOrSister=2]="BrotherOrSister",o[o.SonOrDaughter=3]="SonOrDaughter",o[o.Grandparent=4]="Grandparent",o[o.UncleOrAunt=5]="UncleOrAunt",o[o.NephewOrNiece=6]="NephewOrNiece",o[o.Grandchild=7]="Grandchild",o[o.Cousin=8]="Cousin";var u,l=/*#__PURE__*/function(){function i(){}return i.opposite=function(i){switch(i){case e.Familiar.Grandparent:return e.Familiar.Grandchild;case e.Familiar.BrotherOrSister:return e.Familiar.BrotherOrSister;case e.Familiar.SonOrDaughter:return e.Familiar.Parent;case e.Familiar.Grandchild:return e.Familiar.Grandparent;case e.Familiar.Parent:return e.Familiar.SonOrDaughter;case e.Familiar.Cousin:return e.Familiar.Cousin;case e.Familiar.NephewOrNiece:return e.Familiar.UncleOrAunt;case e.Familiar.UncleOrAunt:return e.Familiar.NephewOrNiece;default:return e.Familiar.None}},i}();e.RelationKind=void 0,(u=e.RelationKind||(e.RelationKind={}))[u.Neutral=0]="Neutral",u[u.Friend=1]="Friend",u[u.Enemy=2]="Enemy",u[u.Lover=3]="Lover",u[u.ExLover=4]="ExLover",u[u.Sexy=5]="Sexy",u[u.UnSexy=6]="UnSexy",u[u.Marriaged=7]="Marriaged",u[u.UnMarriaged=8]="UnMarriaged",u[u.Platonic=9]="Platonic",u[u.ExPlatonic=10]="ExPlatonic",u[u.FuckFriend=11]="FuckFriend",u[u.UnFuckEnemy=12]="UnFuckEnemy",u[u.Best=13]="Best",u[u.Worst=14]="Worst",u[u.Frienzoned=15]="Frienzoned",u[u.HatefullSexy=16]="HatefullSexy";var d=/*#__PURE__*/function(){function i(i,t,n,r,a){void 0===r&&(r=e.Familiar.None),void 0===a&&(a=!1),this._metrics=void 0,this._purity=void 0,this._familiar=void 0,this._metrics=new c(i,t,n),this._familiar=r,a&&(this._purity=new c(i,t,n))}var t=i.prototype;return t.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())},t.copy=function(){return new i(this._metrics.friendship,this._metrics.love,this._metrics.sex,this._familiar,this.isPure)},a(i,[{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!==e.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}}]),i}(),h=/*#__PURE__*/function(){function i(){}return i.get=function(i,t,n){void 0===t&&(t=e.Familiar.None),void 0===n&&(n=!1);var r=50,a=50,s=50;switch(i){case e.RelationKind.Friend:r=90;break;case e.RelationKind.Enemy:r=10;break;case e.RelationKind.Lover:a=90;break;case e.RelationKind.ExLover:a=10;break;case e.RelationKind.Sexy:s=90;break;case e.RelationKind.UnSexy:s=10;break;case e.RelationKind.Marriaged:r=90,a=90;break;case e.RelationKind.UnMarriaged:r=10,a=10;break;case e.RelationKind.Platonic:a=90,s=90;break;case e.RelationKind.ExPlatonic:a=10,s=10;break;case e.RelationKind.FuckFriend:r=90,s=90;break;case e.RelationKind.UnFuckEnemy:r=10,s=10;break;case e.RelationKind.Best:r=90,a=90,s=90;break;case e.RelationKind.Worst:r=10,a=10,s=10;break;case e.RelationKind.Frienzoned:r=90,s=10;break;case e.RelationKind.HatefullSexy:r=10,s=90}return new d(r,a,s,t,n)},i}(),f=/*#__PURE__*/function(){function i(){this._relations=void 0,this._relations=new Map}var t=i.prototype;return t.add=function(e,i){this._relations.set(e,i)},t.append=function(e,i){return this._relations.set(e,i),this},t.knows=function(e){return this._relations.has(e)},t.get=function(i){if(this._relations.has(i))return this._relations.get(i);var t=h.get(e.RelationKind.Neutral);return this._relations.set(i,t),t},t.normalizeAll=function(){this._relations.forEach(function(e){return e.normalize()})},t.copy=function(){for(var e,t=new i,n=function(e,i){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,i){if(e){if("string"==typeof e)return s(e,i);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)?s(e,i):void 0}}(e))){t&&(e=t);var n=0;return function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}}}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());!(e=n()).done;){var r=e.value;t.add(r,this._relations.get(r))}return t},a(i,[{key:"knowns",get:function(){return Array.from(this._relations.keys())}}]),i}();e.FamiliarDomain=l,e.Relation=d,e.RelationFactory=h,e.RelationMetrics=c,e.RelationSet=f}); //# sourceMappingURL=index.umd.js.map