Skip to content

Instantly share code, notes, and snippets.

@adcar
Last active April 3, 2018 21:33
Show Gist options
  • Save adcar/643b929fcc83f999360b7cd12b89286a to your computer and use it in GitHub Desktop.
Save adcar/643b929fcc83f999360b7cd12b89286a to your computer and use it in GitHub Desktop.
xd
This file has been truncated, but you can view the full file.
webpackJsonp([0], {
"+0OL": function(e, t, i) {
"use strict";
e.exports = {
Action: {
None: 0,
Reload: 1,
UseItem: 2,
Revive: 3
},
WeaponSlot: {
Primary: 0,
Secondary: 1,
Throwable: 3,
Melee: 2,
Count: 4
},
WeaponType: ["gun", "gun", "melee", "throwable"],
DamageType: {
Player: 0,
Bleeding: 1,
Gas: 2
},
Anim: {
None: 0,
Melee: 1,
Cook: 2,
Throw: 3,
CrawlForward: 4,
CrawlBackward: 5,
Revive: 6
},
GasMode: {
Inactive: 0,
Waiting: 1,
Moving: 2
},
protocolVersion: 21,
map: {
baseWidth: 512,
baseHeight: 512,
gridSize: 16,
shoreDivisions: 64,
shoreInset: 32,
shoreVariation: 3,
grassInset: 18,
grassVariation: 2,
extension: 80
},
player: {
radius: 1,
minActiveTime: 10,
moveSpeed: 12,
health: 100,
boostDecay: .33,
boostMoveSpeed: 2,
boostHealAmount: .33,
boostBreakpoints: [1, 1, 1.5, .5],
scopeDelay: .25,
baseSwitchDelay: .25,
freeSwitchCooldown: 1,
headshotChance: .15,
img: {
scale: 1
},
spectateDeadTimeout: 2,
bleedTickRate: 1,
bleedDamage: 2,
downedMoveSpeed: 4,
downedRezMoveSpeed: 2,
reviveDuration: 8,
reviveMaxRange: 5,
reviveHealth: 24,
crawlTime: .75,
emoteSoftCooldown: 2,
emoteHardCooldown: 6,
emoteThreshold: 6,
throwableMaxMouseDist: 18,
cookTime: .1,
throwTime: .3,
cookSpeedPenalty: 3,
waterSpeedPenalty: 3,
meleeHeight: .25
},
teamColors: [16776960, 255, 16711680, 16711935],
bullet: {
maxReflect: 3,
reflectDistDecay: 1.5,
height: .25
},
projectile: {
maxHeight: 2
},
explosions: {
explosion_frag: {
damage: 125,
rad: {
min: 5,
max: 12
},
shrapnelCount: 12,
shrapnelType: "shrapnel_frag",
explosionType: "frag",
decalType: "decal_frag_explosion"
},
explosion_smoke: {
damage: 0,
rad: {
min: 5,
max: 12
},
shrapnelCount: 0,
shrapnelType: "shrapnel_frag",
explosionType: "smoke",
decalType: "decal_smoke_explosion"
},
explosion_barrel: {
damage: 125,
rad: {
min: 5,
max: 12
},
shrapnelCount: 12,
shrapnelType: "shrapnel_barrel",
explosionType: "barrel",
decalType: "decal_barrel_explosion"
}
},
bullets: {
bullet_mp5: {
damage: 11,
obstacleDamage: 1,
falloff: .8,
distance: 100,
speed: 85,
variance: 0,
shrapnel: !1,
tracerColor: 16704198,
tracerWidth: .1,
tracerLength: .8,
tracerAlpha: 1
},
bullet_ak47: {
damage: 13.5,
obstacleDamage: 1,
falloff: .9,
distance: 200,
speed: 100,
variance: 0,
shrapnel: !1,
tracerColor: 12965630,
tracerWidth: .1,
tracerLength: .8,
tracerAlpha: 1
},
bullet_mosin: {
damage: 64,
obstacleDamage: 1.5,
falloff: .95,
distance: 500,
speed: 178,
variance: 0,
shrapnel: !1,
tracerColor: 12965630,
tracerWidth: .2,
tracerLength: .8,
tracerAlpha: 1
},
bullet_m39: {
damage: 24.5,
obstacleDamage: 1,
falloff: .9,
distance: 400,
speed: 125,
variance: 0,
shrapnel: !1,
tracerColor: 12965630,
tracerWidth: .1,
tracerLength: .8,
tracerAlpha: 1
},
bullet_shotgun: {
damage: 12,
obstacleDamage: 1,
falloff: .6,
speed: 66,
distance: 29,
variance: 0,
shrapnel: !1,
tracerColor: 16702684,
tracerWidth: .1,
tracerLength: .8,
tracerAlpha: 1
},
bullet_m9: {
damage: 12,
obstacleDamage: 1,
falloff: .7,
speed: 85,
distance: 100,
variance: 0,
shrapnel: !1,
tracerColor: 16704198,
tracerWidth: .1,
tracerLength: .8,
tracerAlpha: 1
},
bullet_ot38: {
damage: 26,
obstacleDamage: 1,
falloff: .75,
speed: 112,
distance: 125,
variance: 0,
shrapnel: !1,
tracerColor: 12965630,
tracerWidth: .09,
tracerLength: .8,
tracerAlpha: 1
},
bullet_mac10: {
damage: 9.25,
obstacleDamage: 1,
falloff: .6,
distance: 50,
speed: 75,
variance: 0,
shrapnel: !1,
tracerColor: 16704198,
tracerWidth: .1,
tracerLength: .8,
tracerAlpha: 1
},
bullet_ump9: {
damage: 15,
obstacleDamage: 1,
falloff: .75,
distance: 100,
speed: 100,
variance: 0,
shrapnel: !1,
tracerColor: 16704198,
tracerWidth: .1,
tracerLength: .8,
tracerAlpha: 1
},
bullet_dp28: {
damage: 14,
obstacleDamage: 1.5,
falloff: .9,
distance: 225,
speed: 110,
variance: 0,
shrapnel: !1,
tracerColor: 12965630,
tracerWidth: .1,
tracerLength: .8,
tracerAlpha: 1
},
bullet_glock: {
damage: 9,
obstacleDamage: 1,
falloff: .5,
speed: 70,
distance: 44,
variance: 0,
shrapnel: !1,
tracerColor: 16704198,
tracerWidth: .1,
tracerLength: .8,
tracerAlpha: 1
},
bullet_famas: {
damage: 17,
obstacleDamage: 1,
falloff: .8,
distance: 150,
speed: 110,
variance: 0,
shrapnel: !1,
tracerColor: 11141010,
tracerWidth: .1,
tracerLength: .8,
tracerAlpha: 1
},
bullet_hk416: {
damage: 11,
obstacleDamage: 1,
falloff: .85,
distance: 175,
speed: 105,
variance: 0,
shrapnel: !1,
tracerColor: 11141010,
tracerWidth: .1,
tracerLength: .8,
tracerAlpha: 1
},
bullet_mk12: {
damage: 19.5,
obstacleDamage: 1,
falloff: .9,
distance: 400,
speed: 132,
variance: 0,
shrapnel: !1,
tracerColor: 11141010,
tracerWidth: .1,
tracerLength: .8,
tracerAlpha: 1
},
bullet_m249: {
damage: 14,
obstacleDamage: 1.75,
falloff: .9,
distance: 220,
speed: 125,
variance: 0,
shrapnel: !1,
tracerColor: 11141010,
tracerWidth: .1,
tracerLength: .8,
tracerAlpha: 1
},
shrapnel_barrel: {
damage: 20,
obstacleDamage: 1,
falloff: 1,
speed: 20,
distance: 8,
variance: 1.5,
shrapnel: !0,
tracerColor: 3355443,
tracerWidth: .125,
tracerLength: .5,
tracerAlpha: 1
},
shrapnel_frag: {
damage: 20,
obstacleDamage: 1,
falloff: 1,
speed: 20,
distance: 8,
variance: 1.5,
shrapnel: !0,
tracerColor: 3355443,
tracerWidth: .125,
tracerLength: .5,
tracerAlpha: 1
}
},
items: {
outfitBase: {
name: "Basic Outfit",
type: "skin",
subtype: "normal",
rad: 1,
skinImg: {
baseTint: 16566389,
baseSprite: "img/player/player-base-01.svg",
baseScale: 1,
handTint: 16566389,
handSprite: "img/player/player-hands-01.svg",
backpackTint: 8480055
},
lootImg: {
sprite: "img/loot/loot-shirt-01.svg",
scale: .2,
rad: 16,
border: !0,
tint: 16566389
},
sound: {
pickup: "clothes_pickup_01"
}
},
outfitJester: {
name: "Jester's Folly",
type: "skin",
subtype: "normal",
rad: 1,
skinImg: {
baseTint: 7798904,
baseSprite: "img/player/player-base-01.svg",
baseScale: 1,
handTint: 4915276,
handSprite: "img/player/player-hands-01.svg",
backpackTint: 936960
},
lootImg: {
sprite: "img/loot/loot-shirt-01.svg",
scale: .2,
rad: 16,
border: !0,
tint: 7798904
},
sound: {
pickup: "clothes_pickup_01"
}
},
outfitWoodland: {
name: "Woodland Combat",
type: "skin",
subtype: "normal",
rad: 1,
skinImg: {
baseTint: 2831146,
baseSprite: "img/player/player-base-01.svg",
baseScale: 1,
handTint: 5925970,
handSprite: "img/player/player-hands-01.svg",
backpackTint: 5056e3
},
lootImg: {
sprite: "img/loot/loot-shirt-01.svg",
scale: .2,
rad: 16,
border: !0,
tint: 2831146
},
sound: {
pickup: "clothes_pickup_01"
}
},
outfitRoyalFortune: {
name: "Royal Fortune",
type: "skin",
subtype: "normal",
rad: 1,
skinImg: {
baseTint: 8333091,
baseSprite: "img/player/player-base-01.svg",
baseScale: 1,
handTint: 15254058,
handSprite: "img/player/player-hands-01.svg",
backpackTint: 9981696
},
lootImg: {
sprite: "img/loot/loot-shirt-01.svg",
scale: .2,
rad: 16,
border: !0,
tint: 8333091
},
sound: {
pickup: "clothes_pickup_01"
}
},
outfitKeyLime: {
name: "Key Lime",
type: "skin",
subtype: "normal",
rad: 1,
skinImg: {
baseTint: 13107007,
baseSprite: "img/player/player-base-01.svg",
baseScale: 1,
handTint: 15662941,
handSprite: "img/player/player-hands-01.svg",
backpackTint: 12355383
},
lootImg: {
sprite: "img/loot/loot-shirt-01.svg",
scale: .2,
rad: 16,
border: !0,
tint: 13107007
},
sound: {
pickup: "clothes_pickup_01"
}
},
outfitCobaltShell: {
name: "Cobalt Shell",
type: "skin",
subtype: "normal",
rad: 1,
skinImg: {
baseTint: 11095,
baseSprite: "img/player/player-base-01.svg",
baseScale: 1,
handTint: 2711164,
handSprite: "img/player/player-hands-01.svg",
backpackTint: 19093
},
lootImg: {
sprite: "img/loot/loot-shirt-01.svg",
scale: .2,
rad: 16,
border: !0,
tint: 11095
},
sound: {
pickup: "clothes_pickup_01"
}
},
outfitCarbonFiber: {
name: "Carbon Fiber",
type: "skin",
subtype: "normal",
rad: 1,
skinImg: {
baseTint: 2171169,
baseSprite: "img/player/player-base-01.svg",
baseScale: 1,
handTint: 1842204,
handSprite: "img/player/player-hands-01.svg",
backpackTint: 3552822
},
lootImg: {
sprite: "img/loot/loot-shirt-01.svg",
scale: .2,
rad: 16,
border: !0,
tint: 2171169
},
sound: {
pickup: "clothes_pickup_01"
}
},
outfitDarkGloves: {
name: "The Professional",
type: "skin",
subtype: "normal",
rad: 1,
skinImg: {
baseTint: 16566389,
baseSprite: "img/player/player-base-01.svg",
baseScale: 1,
handTint: 12482560,
handSprite: "img/player/player-hands-01.svg",
backpackTint: 10708736
},
lootImg: {
sprite: "img/loot/loot-shirt-01.svg",
scale: .2,
rad: 16,
border: !0,
tint: 12482560
},
sound: {
pickup: "clothes_pickup_01"
}
},
outfitBarrel: {
name: "Fish in a Barrel",
type: "skin",
subtype: "camo",
rad: 1,
skinImg: {
baseTint: 16777215,
baseSprite: "img/map/map-barrel-01.svg",
baseScale: .8,
handTint: 2236962,
handSprite: "img/player/player-hands.svg",
backpackTint: 6697728
},
lootImg: {
sprite: "img/loot/loot-shirt-01.svg",
scale: .2,
rad: 16,
border: !0,
tint: 2236962
},
sound: {
pickup: "clothes_pickup_01"
}
},
outfitGhillie: {
name: "Ghillie Suit",
type: "skin",
subtype: "camo",
rad: 1,
skinImg: {
baseTint: 8630096,
baseSprite: "img/player/player-base-01.svg",
baseScale: 1,
handTint: 8630096,
handSprite: "img/player/player-hands-01.svg",
backpackTint: 6697728
},
lootImg: {
sprite: "img/loot/loot-shirt-01.svg",
scale: .2,
rad: 16,
border: !0,
tint: 8630096
},
sound: {
pickup: "clothes_pickup_01"
}
},
outfitCamo: {
name: "Forest Camo",
type: "skin",
subtype: "normal",
rad: 1,
skinImg: {
baseTint: 10066278,
baseSprite: "img/player/player-base-01.svg",
baseScale: 1,
handTint: 8684631,
handSprite: "img/player/player-hands-01.svg",
backpackTint: 6710835
},
lootImg: {
sprite: "img/loot/loot-shirt-01.svg",
scale: .2,
rad: 16,
border: !0,
tint: 10066278
},
sound: {
pickup: "clothes_pickup_01"
}
},
outfitRed: {
name: "Target Practice",
type: "skin",
subtype: "normal",
rad: 1,
skinImg: {
baseTint: 16711680,
baseSprite: "img/player/player-base-01.svg",
baseScale: 1,
handTint: 13893632,
handSprite: "img/player/player-hands-01.svg",
backpackTint: 11993088
},
lootImg: {
sprite: "img/loot/loot-shirt-01.svg",
scale: .2,
rad: 16,
border: !0,
tint: 16711680
},
sound: {
pickup: "clothes_pickup_01"
}
},
outfitWhite: {
name: "Arctic Avenger",
type: "skin",
subtype: "normal",
rad: 1,
skinImg: {
baseTint: 14935011,
baseSprite: "img/player/player-base-01.svg",
baseScale: 1,
handTint: 15658734,
handSprite: "img/player/player-hands-01.svg",
backpackTint: 14474460
},
lootImg: {
sprite: "img/loot/loot-shirt-01.svg",
scale: .2,
rad: 16,
border: !0,
tint: 14935011
},
sound: {
pickup: "clothes_pickup_01"
}
},
fists: {
name: "Fists",
type: "melee",
switchDelay: .25,
rangeMult: 1.25,
areaOfEffect: .75,
damageTime: .1,
cooldownTime: .15,
damage: 24,
headshotMult: 1,
speed: {
equip: 1,
attack: 0
},
sound: {
swing: "punch_swing_01",
deploy: "stow_weapon_01"
},
lootImg: {
sprite: "img/loot/loot-weapon-fists.svg",
scale: .3,
rad: 25,
border: !0,
tint: 65280
}
},
mp5: {
name: "MP5",
type: "gun",
fireMode: "auto",
reloadMode: "mag",
caseTiming: "shoot",
ammo: "9mm",
ammoSpawnCount: 90,
maxClip: 30,
maxReload: 30,
reloadTime: 2,
fireDelay: .09,
switchDelay: .75,
lengthMult: .75,
rad: 1.25,
moveSpread: 4,
shotSpread: 3,
bulletCount: 1,
bulletType: "bullet_mp5",
headshotMult: 2,
speed: {
equip: 0,
attack: 0
},
lootImg: {
sprite: "img/loot/loot-weapon-mp5.svg",
scale: .3,
rad: 25,
border: !0,
tint: 65280
},
worldImg: {
sprite: "img/guns/gun-med-01.svg",
scale: {
x: .5,
y: .5
},
tint: 1184274,
hands: 2,
leftHandOffset: 0,
recoil: 2.25
},
particle: {
shellScale: 1
},
sound: {
shoot: "mp5_01",
reload: "mp5_reload_01",
pickup: "gun_pickup_01",
empty: "empty_fire_01",
deploy: "mp5_switch_01"
}
},
mac10: {
name: "MAC-10",
type: "gun",
fireMode: "auto",
reloadMode: "mag",
caseTiming: "shoot",
ammo: "9mm",
ammoSpawnCount: 96,
maxClip: 32,
maxReload: 32,
reloadTime: 1.8,
fireDelay: .045,
switchDelay: .75,
lengthMult: .7,
rad: 1.25,
moveSpread: 11,
shotSpread: 10,
bulletCount: 1,
bulletType: "bullet_mac10",
headshotMult: 2,
speed: {
equip: 0,
attack: 0
},
lootImg: {
sprite: "img/loot/loot-weapon-mac10.svg",
scale: .3,
rad: 25,
border: !0,
tint: 65280
},
worldImg: {
sprite: "img/guns/gun-med-01.svg",
scale: {
x: .5,
y: .46
},
tint: 3684408,
hands: 2,
leftHandOffset: 4,
recoil: 2.25
},
particle: {
shellScale: 1
},
sound: {
shoot: "mac10_01",
reload: "mac10_reload_01",
pickup: "gun_pickup_01",
empty: "empty_fire_01",
deploy: "mac10_switch_01"
}
},
ump9: {
name: "UMP9",
type: "gun",
fireMode: "burst",
reloadMode: "mag",
caseTiming: "shoot",
ammo: "9mm",
ammoSpawnCount: 90,
maxClip: 30,
maxReload: 30,
reloadTime: 1.9,
fireDelay: .35,
burstDelay: .07,
switchDelay: .75,
lengthMult: .8,
rad: 1.25,
moveSpread: 3,
shotSpread: 1.5,
bulletCount: 1,
burstCount: 3,
bulletType: "bullet_ump9",
headshotMult: 2,
speed: {
equip: 0,
attack: 0
},
lootImg: {
sprite: "img/loot/loot-weapon-ump9.svg",
scale: .3,
rad: 25,
border: !0,
tint: 65280
},
worldImg: {
sprite: "img/guns/gun-med-01.svg",
scale: {
x: .5,
y: .52
},
tint: 1184274,
hands: 2,
leftHandOffset: 16,
recoil: 2.25
},
particle: {
shellScale: 1
},
sound: {
shoot: "ump9_01",
reload: "ump9_reload_01",
pickup: "gun_pickup_01",
empty: "empty_fire_01",
deploy: "ump9_switch_01"
}
},
famas: {
name: "FAMAS",
type: "gun",
fireMode: "burst",
reloadMode: "mag",
caseTiming: "shoot",
ammo: "556mm",
ammoSpawnCount: 75,
maxClip: 25,
maxReload: 25,
reloadTime: 2.3,
fireDelay: .35,
burstDelay: .07,
switchDelay: .75,
lengthMult: .85,
rad: 1.25,
moveSpread: 2,
shotSpread: 1.1,
bulletCount: 1,
burstCount: 3,
bulletType: "bullet_famas",
headshotMult: 2,
speed: {
equip: 0,
attack: 0
},
lootImg: {
sprite: "img/loot/loot-weapon-famas.svg",
scale: .3,
rad: 25,
border: !0,
tint: 65280
},
worldImg: {
sprite: "img/guns/gun-med-01.svg",
scale: {
x: .5,
y: .53
},
tint: 10061929,
hands: 2,
leftHandOffset: 16,
recoil: 3
},
particle: {
shellScale: 1
},
sound: {
shoot: "famas_01",
reload: "famas_reload_01",
pickup: "gun_pickup_01",
empty: "empty_fire_01",
deploy: "famas_switch_01"
}
},
hk416: {
name: "HK416",
type: "gun",
fireMode: "auto",
reloadMode: "mag",
caseTiming: "shoot",
ammo: "556mm",
ammoSpawnCount: 90,
maxClip: 30,
maxReload: 30,
reloadTime: 2.3,
fireDelay: .075,
switchDelay: .75,
lengthMult: .8,
rad: 1.25,
moveSpread: 8,
shotSpread: 4,
bulletCount: 1,
bulletType: "bullet_hk416",
headshotMult: 2,
speed: {
equip: 0,
attack: 0
},
lootImg: {
sprite: "img/loot/loot-weapon-hk416.svg",
scale: .3,
rad: 25,
border: !0,
tint: 65280
},
worldImg: {
sprite: "img/guns/gun-med-01.svg",
scale: {
x: .5,
y: .52
},
tint: 14402714,
hands: 2,
leftHandOffset: 12,
recoil: 3
},
particle: {
shellScale: 1
},
sound: {
shoot: "hk416_01",
reload: "hk416_reload_01",
pickup: "gun_pickup_01",
empty: "empty_fire_01",
deploy: "hk416_switch_01"
}
},
mk12: {
name: "Mk 12 SPR",
type: "gun",
fireMode: "single",
reloadMode: "mag",
caseTiming: "shoot",
ammo: "556mm",
ammoSpawnCount: 60,
maxClip: 20,
maxReload: 20,
reloadTime: 2.4,
fireDelay: .15,
switchDelay: .75,
lengthMult: 1.1,
rad: 1.25,
moveSpread: 3,
shotSpread: 1,
bulletCount: 1,
bulletType: "bullet_mk12",
headshotMult: 2,
speed: {
equip: 0,
attack: 0
},
lootImg: {
sprite: "img/loot/loot-weapon-mk12.svg",
scale: .3,
rad: 25,
border: !0,
tint: 65280
},
worldImg: {
sprite: "img/guns/gun-long-01.svg",
scale: {
x: .5,
y: .49
},
tint: 10984586,
hands: 2,
leftHandOffset: 12,
recoil: 3.75
},
particle: {
shellScale: 1.3
},
sound: {
shoot: "mk12_01",
reload: "mk12_reload_01",
pickup: "gun_pickup_01",
empty: "empty_fire_02",
deploy: "mk12_switch_01"
}
},
m249: {
name: "M249",
type: "gun",
fireMode: "auto",
reloadMode: "mag",
caseTiming: "shoot",
ammo: "556mm",
ammoSpawnCount: 200,
maxClip: 100,
maxReload: 100,
reloadTime: 6.7,
fireDelay: .08,
switchDelay: .75,
lengthMult: 1.175,
rad: 1.25,
moveSpread: 6,
shotSpread: 1.5,
bulletCount: 1,
bulletType: "bullet_m249",
headshotMult: 2,
speed: {
equip: 0,
attack: -4
},
lootImg: {
sprite: "img/loot/loot-weapon-m249.svg",
scale: .3,
rad: 25,
border: !0,
tint: 65280
},
worldImg: {
sprite: "img/guns/gun-long-01.svg",
sprite_bot: "img/guns/gun-m249-bot-01.svg",
scale: {
x: .5,
y: .525
},
tint: 3618613,
hands: 2,
leftHandOffset: 32,
recoil: 3
},
particle: {
shellScale: 1
},
sound: {
shoot: "m249_01",
reload: "m249_reload_01",
pickup: "gun_pickup_01",
empty: "empty_fire_02",
deploy: "m249_switch_01"
}
},
ak47: {
name: "AK-47",
type: "gun",
fireMode: "auto",
reloadMode: "mag",
caseTiming: "shoot",
ammo: "762mm",
ammoSpawnCount: 90,
maxClip: 30,
maxReload: 30,
reloadTime: 2.5,
fireDelay: .1,
switchDelay: .75,
lengthMult: .9,
rad: 1.25,
moveSpread: 7,
shotSpread: 2.5,
bulletCount: 1,
bulletType: "bullet_ak47",
headshotMult: 2,
speed: {
equip: 0,
attack: 0
},
lootImg: {
sprite: "img/loot/loot-weapon-ak.svg",
scale: .3,
rad: 25,
border: !0,
tint: 65280
},
worldImg: {
sprite: "img/guns/gun-long-01.svg",
scale: {
x: .5,
y: .45
},
tint: 6433298,
hands: 2,
leftHandOffset: 8,
recoil: 3
},
particle: {
shellScale: 1
},
sound: {
shoot: "ak47_01",
reload: "ak47_reload_01",
pickup: "gun_pickup_01",
empty: "empty_fire_02",
deploy: "ak47_switch_01"
}
},
dp28: {
name: "DP-28",
type: "gun",
fireMode: "auto",
reloadMode: "mag",
caseTiming: "shoot",
ammo: "762mm",
ammoSpawnCount: 120,
maxClip: 60,
maxReload: 60,
reloadTime: 3.3,
fireDelay: .115,
switchDelay: .75,
lengthMult: 1.2,
rad: 1.25,
moveSpread: 8,
shotSpread: 2,
bulletCount: 1,
bulletType: "bullet_dp28",
headshotMult: 2,
speed: {
equip: 0,
attack: -2
},
lootImg: {
sprite: "img/loot/loot-weapon-dp28.svg",
scale: .3,
rad: 25,
border: !0,
tint: 65280
},
worldImg: {
sprite: "img/guns/gun-long-01.svg",
sprite_top: "img/guns/gun-dp28-top-01.svg",
scale: {
x: .5,
y: .53
},
tint: 1710618,
hands: 2,
leftHandOffset: 24,
recoil: 3
},
particle: {
shellScale: 1
},
sound: {
shoot: "dp28_01",
reload: "dp28_reload_01",
pickup: "gun_pickup_01",
empty: "empty_fire_02",
deploy: "dp28_switch_01"
}
},
mosin: {
name: "Mosin Nagant",
type: "gun",
fireMode: "single",
reloadMode: "single",
caseTiming: "shoot",
ammo: "762mm",
ammoSpawnCount: 20,
maxClip: 5,
maxReload: 1,
reloadTime: .9,
fireDelay: 2,
switchDelay: 1,
pullDelay: 1,
lengthMult: 1.2,
rad: 1.25,
moveSpread: 3,
shotSpread: 1,
bulletCount: 1,
bulletType: "bullet_mosin",
headshotMult: 2,
speed: {
equip: 0,
attack: 0
},
lootImg: {
sprite: "img/loot/loot-weapon-enfield.svg",
scale: .3,
rad: 25,
border: !0,
tint: 65280
},
worldImg: {
sprite: "img/guns/gun-long-01.svg",
scale: {
x: .5,
y: .52
},
tint: 3348992,
hands: 2,
leftHandOffset: 8,
recoil: 5.25
},
particle: {
shellScale: 1.8
},
sound: {
shoot: "mosin_01",
reload: "mosin_reload_01",
cycle: "mosin_cycle_01",
pull: "mosin_pull_01",
pickup: "gun_pickup_01",
empty: "empty_fire_02",
deploy: "mosin_cycle_01"
}
},
m39: {
name: "M39 EMR",
type: "gun",
fireMode: "single",
reloadMode: "mag",
caseTiming: "shoot",
ammo: "762mm",
ammoSpawnCount: 60,
maxClip: 20,
maxReload: 20,
reloadTime: 2.5,
fireDelay: .2,
switchDelay: .75,
lengthMult: 1.15,
rad: 1.25,
moveSpread: 4.25,
shotSpread: 1,
bulletCount: 1,
bulletType: "bullet_m39",
headshotMult: 2,
speed: {
equip: 0,
attack: 0
},
lootImg: {
sprite: "img/loot/loot-weapon-m39.svg",
scale: .3,
rad: 25,
border: !0,
tint: 65280
},
worldImg: {
sprite: "img/guns/gun-long-01.svg",
scale: {
x: .5,
y: .5
},
tint: 3355443,
hands: 2,
leftHandOffset: 8,
recoil: 3.75
},
particle: {
shellScale: 1.3
},
sound: {
shoot: "m39_01",
reload: "m39_reload_01",
pickup: "gun_pickup_01",
empty: "empty_fire_02",
deploy: "m39_switch_01"
}
},
m870: {
name: "M870",
type: "gun",
fireMode: "single",
reloadMode: "single",
caseTiming: "shoot",
ammo: "12gauge",
ammoSpawnCount: 10,
maxClip: 5,
maxReload: 1,
reloadTime: .75,
fireDelay: .9,
switchDelay: .9,
pullDelay: .9,
lengthMult: .9,
rad: 1.25,
moveSpread: 2,
shotSpread: 10,
bulletCount: 9,
bulletType: "bullet_shotgun",
headshotMult: 2,
lootImg: {
sprite: "img/loot/loot-weapon-pumpshotgun.svg",
scale: .3,
rad: 25,
border: !0,
tint: 65280
},
speed: {
equip: 0,
attack: 0
},
worldImg: {
sprite: "img/guns/gun-long-01.svg",
scale: {
x: .5,
y: .45
},
tint: 3348992,
hands: 2,
leftHandOffset: 20,
recoil: 3
},
particle: {
shellScale: 1
},
sound: {
shoot: "m870_01",
reload: "m870_reload_01",
cycle: "m870_cycle_01",
pull: "m870_pull_01",
pickup: "gun_pickup_01",
empty: "empty_fire_01",
deploy: "m870_cycle_01"
}
},
mp220: {
name: "MP220",
type: "gun",
fireMode: "single",
reloadMode: "mag",
caseTiming: "reload",
ammo: "12gauge",
ammoSpawnCount: 10,
maxClip: 2,
maxReload: 2,
reloadTime: 2.6,
fireDelay: .2,
switchDelay: .3,
lengthMult: .7,
rad: 1,
moveSpread: 2,
shotSpread: 10,
bulletCount: 9,
bulletType: "bullet_shotgun",
headshotMult: 2,
speed: {
equip: 0,
attack: 0
},
lootImg: {
sprite: "img/loot/loot-weapon-soshotgun.svg",
scale: .3,
rad: 25,
border: !0,
tint: 65280
},
worldImg: {
sprite: "img/guns/gun-med-01.svg",
scale: {
x: .5,
y: .47
},
tint: 3348992,
hands: 2,
leftHandOffset: 0,
recoil: 3
},
particle: {
shellScale: 1
},
sound: {
shoot: "mp220_01",
reload: "mp220_reload_01",
pickup: "gun_pickup_01",
empty: "empty_fire_01",
deploy: "mp220_deploy_01"
}
},
saiga: {
name: "Saiga-12",
type: "gun",
fireMode: "auto",
reloadMode: "mag",
caseTiming: "shoot",
ammo: "12gauge",
ammoSpawnCount: 20,
maxClip: 5,
maxReload: 5,
reloadTime: 2.5,
fireDelay: .4,
switchDelay: .75,
lengthMult: .9,
rad: 1.25,
moveSpread: 2,
shotSpread: 10,
bulletCount: 9,
bulletType: "bullet_shotgun",
headshotMult: 2,
speed: {
equip: 0,
attack: 0
},
lootImg: {
sprite: "img/loot/loot-weapon-autoshotgun.svg",
scale: .3,
rad: 25,
border: !0,
tint: 65280
},
worldImg: {
sprite: "img/guns/gun-long-01.svg",
scale: {
x: .5,
y: .45
},
tint: 2302755,
hands: 2,
leftHandOffset: 12,
recoil: 3
},
particle: {
shellScale: 1
},
sound: {
shoot: "saiga_01",
reload: "saiga_reload_01",
pickup: "gun_pickup_01",
empty: "empty_fire_02",
deploy: "saiga_switch_01"
}
},
m9: {
name: "M9",
type: "gun",
fireMode: "single",
reloadMode: "mag",
caseTiming: "shoot",
ammo: "9mm",
ammoSpawnCount: 45,
dualWieldType: "m9_dual",
maxClip: 15,
maxReload: 15,
reloadTime: 1.6,
fireDelay: .12,
switchDelay: .25,
lengthMult: .5,
rad: 1.25,
moveSpread: 8,
shotSpread: 8,
bulletCount: 1,
bulletType: "bullet_m9",
headshotMult: 2,
speed: {
equip: 0,
attack: 0
},
lootImg: {
sprite: "img/loot/loot-weapon-m9.svg",
scale: .3,
rad: 25,
border: !0,
tint: 65280
},
worldImg: {
sprite: "img/guns/gun-short-01.svg",
scale: {
x: .5,
y: .51
},
tint: 1973790,
hands: 1,
leftHandOffset: 0,
recoil: 2.25
},
particle: {
shellScale: 1
},
sound: {
shoot: "m9_01",
reload: "m9_reload_01",
pickup: "gun_pickup_01",
empty: "empty_fire_01",
deploy: "m9_switch_01"
}
},
m9_dual: {
name: "Dual M9",
hudName: "M9",
type: "gun",
fireMode: "single",
reloadMode: "mag",
caseTiming: "shoot",
isDual: !0,
ammo: "9mm",
ammoSpawnCount: 45,
maxClip: 30,
maxReload: 30,
reloadTime: 3.1,
fireDelay: .08,
switchDelay: .25,
lengthMult: .5,
rad: 1.25,
moveSpread: 9,
shotSpread: 11,
bulletCount: 1,
bulletType: "bullet_m9",
headshotMult: 2,
speed: {
equip: 0,
attack: 0
},
lootImg: {
sprite: "img/loot/loot-weapon-m9-dual.svg",
scale: .3,
rad: 25,
border: !0,
tint: 65280
},
worldImg: {
sprite: "img/guns/gun-short-01.svg",
scale: {
x: .5,
y: .51
},
tint: 1973790,
hands: 2,
leftHandOffset: 0,
recoil: 2.25
},
particle: {
shellScale: 1
},
sound: {
shoot: "m9_01",
reload: "m9_reload_02",
pickup: "gun_pickup_01",
empty: "empty_fire_01",
deploy: "m9_switch_01"
}
},
glock: {
name: "Glock 18C",
type: "gun",
fireMode: "auto",
reloadMode: "mag",
caseTiming: "shoot",
ammo: "9mm",
ammoSpawnCount: 51,
dualWieldType: "glock_dual",
maxClip: 17,
maxReload: 17,
reloadTime: 1.95,
fireDelay: .06,
switchDelay: .25,
lengthMult: .5,
rad: 1.25,
moveSpread: 10,
shotSpread: 12,
bulletCount: 1,
bulletType: "bullet_glock",
headshotMult: 2,
speed: {
equip: 0,
attack: 0
},
lootImg: {
sprite: "img/loot/loot-weapon-glock.svg",
scale: .3,
rad: 25,
border: !0,
tint: 65280
},
worldImg: {
sprite: "img/guns/gun-short-01.svg",
scale: {
x: .5,
y: .51
},
tint: 1973790,
hands: 1,
leftHandOffset: 0,
recoil: 2.25
},
particle: {
shellScale: 1
},
sound: {
shoot: "glock_01",
reload: "glock_reload_01",
pickup: "gun_pickup_01",
empty: "empty_fire_01",
deploy: "glock_switch_01"
}
},
glock_dual: {
name: "Dual Glock 18C",
hudName: "Glock 18C",
type: "gun",
fireMode: "auto",
reloadMode: "mag",
caseTiming: "shoot",
ammo: "9mm",
ammoSpawnCount: 51,
isDual: !0,
maxClip: 34,
maxReload: 34,
reloadTime: 3.8,
fireDelay: .03,
switchDelay: .25,
lengthMult: .5,
rad: 1.25,
moveSpread: 16,
shotSpread: 18,
bulletCount: 1,
bulletType: "bullet_glock",
headshotMult: 2,
speed: {
equip: 0,
attack: 0
},
lootImg: {
sprite: "img/loot/loot-weapon-glock-dual.svg",
scale: .3,
rad: 25,
border: !0,
tint: 65280
},
worldImg: {
sprite: "img/guns/gun-short-01.svg",
scale: {
x: .5,
y: .51
},
tint: 1973790,
hands: 1,
leftHandOffset: 0,
recoil: 2.25
},
particle: {
shellScale: 1
},
sound: {
shoot: "glock_01",
reload: "glock_reload_02",
pickup: "gun_pickup_01",
empty: "empty_fire_01",
deploy: "glock_switch_01"
}
},
ot38: {
name: "OT-38",
type: "gun",
fireMode: "single",
reloadMode: "mag",
caseTiming: "shoot",
ammo: "762mm",
ammoSpawnCount: 20,
dualWieldType: "ot38_dual",
maxClip: 5,
maxReload: 5,
reloadTime: 2,
fireDelay: .4,
switchDelay: .3,
lengthMult: .45,
rad: 1.25,
moveSpread: 3,
shotSpread: 1.25,
bulletCount: 1,
bulletType: "bullet_ot38",
headshotMult: 2,
speed: {
equip: 0,
attack: 0
},
lootImg: {
sprite: "img/loot/loot-weapon-ot38.svg",
scale: .3,
rad: 25,
border: !0,
tint: 65280
},
worldImg: {
sprite: "img/guns/gun-short-01.svg",
scale: {
x: .5,
y: .48
},
tint: 7368816,
hands: 1,
leftHandOffset: 0,
recoil: 2.25
},
particle: {
shellScale: 1
},
sound: {
shoot: "ot38_01",
reload: "ot38_reload_01",
pickup: "gun_pickup_01",
empty: "empty_fire_01",
deploy: "ot38_switch_01"
}
},
ot38_dual: {
name: "Dual OT-38",
hudName: "OT-38",
type: "gun",
fireMode: "single",
reloadMode: "mag",
caseTiming: "shoot",
ammo: "762mm",
ammoSpawnCount: 20,
isDual: !0,
maxClip: 10,
maxReload: 10,
reloadTime: 3.8,
fireDelay: .2,
switchDelay: .3,
lengthMult: .45,
rad: 1.25,
moveSpread: 4,
shotSpread: 1.75,
bulletCount: 1,
bulletType: "bullet_ot38",
headshotMult: 2,
speed: {
equip: 0,
attack: 0
},
lootImg: {
sprite: "img/loot/loot-weapon-ot38-dual.svg",
scale: .3,
rad: 25,
border: !0,
tint: 65280
},
worldImg: {
sprite: "img/guns/gun-short-01.svg",
scale: {
x: .5,
y: .48
},
tint: 7368816,
hands: 1,
leftHandOffset: 0,
recoil: 2.25
},
particle: {
shellScale: 1
},
sound: {
shoot: "ot38_01",
reload: "ot38_reload_02",
pickup: "gun_pickup_01",
empty: "empty_fire_01",
deploy: "ot38_switch_01"
}
},
frag: {
name: "Frag Grenade",
hudName: "Frag",
type: "throwable",
explosionType: "explosion_frag",
inventoryOrder: 1,
cookable: !0,
fuseTime: 4,
fireDelay: .4,
switchDelay: .3,
rad: 1,
projRad: .5,
throwSpeed: 20,
throwDistance: 18,
speed: {
equip: 0,
attack: 0
},
lootImg: {
sprite: "img/loot/loot-throwable-frag.svg",
scale: .2,
rad: 16,
border: !0,
tint: 65280
},
worldImg: {
sprite: "img/proj/frag-proj-nopin-nolever.svg",
scale: .12,
tint: 16777215
},
handImg: {
equip: {
right: {
sprite: "img/proj/frag-proj-pin.svg",
pos: {
x: -30,
y: 30
},
scale: .4
},
left: {
sprite: "none"
}
},
cook: {
right: {
sprite: "img/proj/frag-proj-nopin.svg",
pos: {
x: -30,
y: 30
},
scale: .4
},
left: {
sprite: "img/proj/frag-pin.svg",
pos: {
x: -30,
y: 30
},
scale: .4
}
},
throwing: {
right: {
sprite: "none"
},
left: {
sprite: "none"
}
}
},
sound: {
pullPin: "frag_pin_01",
throwing: "frag_throw_01",
pickup: "frag_pickup_01",
deploy: "frag_deploy_01"
}
},
smoke: {
name: "Smoke Grenade",
hudName: "Smoke",
type: "throwable",
explosionType: "explosion_smoke",
inventoryOrder: 2,
cookable: !1,
fuseTime: 2.5,
fireDelay: .4,
switchDelay: .3,
rad: 1,
projRad: .5,
throwSpeed: 15,
throwDistance: 18,
speed: {
equip: 0,
attack: 0
},
lootImg: {
sprite: "img/loot/loot-throwable-smoke.svg",
scale: .2,
rad: 16,
border: !0,
tint: 65280
},
worldImg: {
sprite: "img/proj/smoke-proj-nopin-nolever.svg",
scale: .12,
tint: 16777215
},
handImg: {
equip: {
right: {
sprite: "img/proj/smoke-proj-pin.svg",
pos: {
x: -15,
y: 30
},
scale: .4
},
left: {
sprite: "none"
}
},
cook: {
right: {
sprite: "img/proj/smoke-proj-nopin.svg",
pos: {
x: -15,
y: 30
},
scale: .4
},
left: {
sprite: "img/proj/frag-pin.svg",
pos: {
x: -15,
y: 30
},
scale: .4
}
},
throwing: {
right: {
sprite: "none"
},
left: {
sprite: "none"
}
}
},
sound: {
pullPin: "frag_pin_01",
throwing: "frag_throw_01",
pickup: "frag_pickup_01",
deploy: "frag_deploy_01"
}
},
"9mm": {
name: "9mm",
type: "ammo",
rad: 1.2,
minStackSize: 15,
lootImg: {
sprite: "img/loot/loot-ammo-box.svg",
scale: .2,
rad: 12,
border: !1,
tint: 16756224
},
sound: {
pickup: "ammo_pickup_01"
}
},
"762mm": {
name: "7.62mm",
type: "ammo",
rad: 1.2,
minStackSize: 10,
lootImg: {
sprite: "img/loot/loot-ammo-box.svg",
scale: .2,
rad: 12,
border: !1,
tint: 26367
},
sound: {
pickup: "ammo_pickup_01"
}
},
"556mm": {
name: "5.56mm",
type: "ammo",
rad: 1.2,
minStackSize: 10,
lootImg: {
sprite: "img/loot/loot-ammo-box.svg",
scale: .2,
rad: 12,
border: !1,
tint: 237056
},
sound: {
pickup: "ammo_pickup_01"
}
},
"12gauge": {
name: "12 gauge",
type: "ammo",
rad: 1.2,
minStackSize: 5,
lootImg: {
sprite: "img/loot/loot-ammo-box.svg",
scale: .2,
rad: 12,
border: !1,
tint: 16711680
},
sound: {
pickup: "ammo_pickup_01"
}
},
bandage: {
name: "Bandage",
type: "heal",
useTime: 3,
heal: 15,
maxHeal: 75,
rad: 1,
lootImg: {
sprite: "img/loot/loot-medical-bandage.svg",
scale: .2,
rad: 16,
border: !0,
tint: 16777215
},
sound: {
pickup: "bandage_pickup_01",
use: "bandage_use_01"
}
},
healthkit: {
name: "Med Kit",
type: "heal",
useTime: 6,
heal: 100,
maxHeal: 100,
rad: 1,
lootImg: {
sprite: "img/loot/loot-medical-healthkit.svg",
scale: .2,
rad: 16,
border: !0,
tint: 16777215
},
sound: {
pickup: "healthkit_pickup_01",
use: "healthkit_use_01"
}
},
soda: {
name: "Soda",
type: "boost",
useTime: 3,
boost: 25,
rad: 1,
lootImg: {
sprite: "img/loot/loot-medical-soda.svg",
scale: .2,
rad: 16,
border: !0,
tint: 16777215
},
sound: {
pickup: "soda_pickup_01",
use: "soda_use_01"
}
},
painkiller: {
name: "Pills",
type: "boost",
useTime: 5,
boost: 50,
rad: 1,
lootImg: {
sprite: "img/loot/loot-medical-pill.svg",
scale: .2,
rad: 16,
border: !0,
tint: 16777215
},
sound: {
pickup: "pills_pickup_01",
use: "pills_use_01"
}
},
backpack00: {
name: "Pouch",
type: "backpack",
desc: "Holds a minimal amount of ammo and supplies.",
level: 0,
rad: 1,
tint: 16777215,
lootImg: {
sprite: "img/loot/loot-pack-00.svg",
scale: .2,
rad: 16,
border: !0,
tint: 16777215
},
sound: {
pickup: "pack_pickup_01"
}
},
backpack01: {
name: "Small Pack",
type: "backpack",
desc: "Holds an adequate amount of ammo and supplies.",
level: 1,
rad: 1,
tint: 6697728,
lootImg: {
sprite: "img/loot/loot-pack-01.svg",
scale: .2,
rad: 16,
border: !0,
tint: 16777215
},
sound: {
pickup: "pack_pickup_01"
}
},
backpack02: {
name: "Regular Pack",
type: "backpack",
desc: "Holds a generous amount of ammo and supplies.",
level: 2,
rad: 1,
tint: 26112,
lootImg: {
sprite: "img/loot/loot-pack-02.svg",
scale: .2,
rad: 16,
border: !0,
tint: 16777215
},
sound: {
pickup: "pack_pickup_01"
}
},
backpack03: {
name: "Military Pack",
type: "backpack",
desc: "For when you need to hold all of the things.",
level: 3,
rad: 1,
tint: 6710835,
lootImg: {
sprite: "img/loot/loot-pack-03.svg",
scale: .2,
rad: 16,
border: !0,
tint: 16777215
},
sound: {
pickup: "pack_pickup_01"
}
},
helmet01: {
name: "Level 1 Helmet",
type: "helmet",
level: 1,
damageReduction: .25,
rad: 1,
tint: 3244031,
lootImg: {
sprite: "img/loot/loot-helmet-01.svg",
scale: .2,
rad: 16,
border: !0,
tint: 16777215
},
sound: {
pickup: "helmet_pickup_01"
}
},
helmet02: {
name: "Level 2 Helmet",
type: "helmet",
level: 2,
damageReduction: .4,
rad: 1,
tint: 13027014,
lootImg: {
sprite: "img/loot/loot-helmet-02.svg",
scale: .2,
rad: 16,
border: !0,
tint: 16777215
},
sound: {
pickup: "helmet_pickup_01"
}
},
helmet03: {
name: "Level 3 Helmet",
type: "helmet",
level: 3,
damageReduction: .55,
rad: 1,
tint: 2434341,
lootImg: {
sprite: "img/loot/loot-helmet-03.svg",
scale: .2,
rad: 16,
border: !0,
tint: 16777215
},
sound: {
pickup: "helmet_pickup_01"
}
},
chest01: {
name: "Level 1 Vest",
type: "chest",
level: 1,
damageReduction: .25,
rad: 1,
tint: 11842740,
lootImg: {
sprite: "img/loot/loot-chest-01.svg",
scale: .2,
rad: 16,
border: !0,
tint: 16777215
},
sound: {
pickup: "chest_pickup_01"
}
},
chest02: {
name: "Level 2 Vest",
type: "chest",
level: 2,
damageReduction: .4,
rad: 1,
tint: 5921370,
lootImg: {
sprite: "img/loot/loot-chest-02.svg",
scale: .2,
rad: 16,
border: !0,
tint: 16777215
},
sound: {
pickup: "chest_pickup_01"
}
},
chest03: {
name: "Level 3 Vest",
type: "chest",
level: 3,
damageReduction: .5,
rad: 1,
tint: 0,
lootImg: {
sprite: "img/loot/loot-chest-03.svg",
scale: .2,
rad: 16,
border: !0,
tint: 16777215
},
sound: {
pickup: "chest_pickup_01"
}
},
"1xscope": {
name: "1x Scope",
type: "scope",
level: 1,
rad: 1,
lootImg: {
sprite: "img/loot/loot-scope-00.svg",
scale: .2,
rad: 16,
border: !0,
tint: 16777215
},
sound: {
pickup: "scope_pickup_01"
}
},
"2xscope": {
name: "2x Scope",
type: "scope",
level: 2,
rad: 1,
lootImg: {
sprite: "img/loot/loot-scope-01.svg",
scale: .2,
rad: 16,
border: !0,
tint: 16777215
},
sound: {
pickup: "scope_pickup_01"
}
},
"4xscope": {
name: "4x Scope",
type: "scope",
level: 4,
rad: 1,
lootImg: {
sprite: "img/loot/loot-scope-02.svg",
scale: .2,
rad: 16,
border: !0,
tint: 16777215
},
sound: {
pickup: "scope_pickup_01"
}
},
"8xscope": {
name: "8x Scope",
type: "scope",
level: 8,
rad: 1,
lootImg: {
sprite: "img/loot/loot-scope-03.svg",
scale: .2,
rad: 16,
border: !0,
tint: 16777215
},
sound: {
pickup: "scope_pickup_01"
}
},
"15xscope": {
name: "15x Scope",
type: "scope",
level: 15,
rad: 1,
lootImg: {
sprite: "img/loot/loot-scope-04.svg",
scale: .2,
rad: 16,
border: !0,
tint: 16777215
},
sound: {
pickup: "scope_pickup_01"
}
}
},
scopeZoomRadius: {
"1xscope": 28,
"2xscope": 36,
"4xscope": 48,
"8xscope": 68,
"15xscope": 104
},
bagSizes: {
"9mm": [120, 240, 330, 420],
"762mm": [90, 180, 240, 300],
"556mm": [90, 180, 240, 300],
"12gauge": [15, 30, 60, 90],
frag: [3, 6, 9, 12],
smoke: [3, 6, 9, 12],
bandage: [5, 10, 15, 30],
healthkit: [1, 2, 3, 4],
soda: [2, 5, 10, 15],
painkiller: [1, 2, 3, 4],
"1xscope": [1, 1, 1, 1],
"2xscope": [1, 1, 1, 1],
"4xscope": [1, 1, 1, 1],
"8xscope": [1, 1, 1, 1],
"15xscope": [1, 1, 1, 1]
}
}
},
"+sac": function(e, t, i) {
function a(e) {
return i(n(e))
}
function n(e) {
var t = r[e];
if (!(t + 1))
throw new Error("Cannot find module '" + e + "'.");
return t
}
var r = {
"./da.js": "j5/T",
"./de.js": "KdTN",
"./en.js": "W+3y",
"./es.js": "pb8F",
"./fr.js": "FRcz",
"./it.js": "O/82",
"./ko.js": "BkwK",
"./nl.js": "vdJX",
"./pl.js": "DMc6",
"./pt.js": "nlKB",
"./ru.js": "8jco",
"./sv.js": "RCak",
"./th.js": "R4DZ",
"./tr.js": "eqS/",
"./zh-cn.js": "UWg4",
"./zh-tw.js": "kIX4"
};
a.keys = function() {
return Object.keys(r)
}
,
a.resolve = n,
e.exports = a,
a.id = "+sac"
},
"/2+T": function(e, t, i) {
"use strict";
var a = {
create: function(e, t) {
return {
x: e,
y: void 0 !== t ? t : e
}
},
copy: function(e) {
return {
x: e.x,
y: e.y
}
},
add: function(e, t) {
return {
x: e.x + t.x,
y: e.y + t.y
}
},
sub: function(e, t) {
return {
x: e.x - t.x,
y: e.y - t.y
}
},
mul: function(e, t) {
return {
x: e.x * t,
y: e.y * t
}
},
div: function(e, t) {
return {
x: e.x / t,
y: e.y / t
}
},
neg: function(e) {
return {
x: -e.x,
y: -e.y
}
},
lengthSqr: function(e) {
return e.x * e.x + e.y * e.y
},
length: function(e) {
return Math.sqrt(a.lengthSqr(e))
},
normalize: function(e) {
var t = a.length(e);
return {
x: t > 1e-6 ? e.x / t : e.x,
y: t > 1e-6 ? e.y / t : e.y
}
},
normalizeSafe: function(e, t) {
t = t || a.create(1, 0);
var i = a.length(e);
return {
x: i > 1e-6 ? e.x / i : t.x,
y: i > 1e-6 ? e.y / i : t.y
}
},
dot: function(e, t) {
return e.x * t.x + e.y * t.y
},
perp: function(e) {
return {
x: -e.y,
y: e.x
}
},
proj: function(e, t) {
return a.mul(t, a.dot(e, t) / a.dot(t, t))
},
rotate: function(e, t) {
var i = Math.cos(t)
, a = Math.sin(t);
return {
x: e.x * i - e.y * a,
y: e.x * a + e.y * i
}
},
divElems: function(e, t) {
return {
x: e.x / t.x,
y: e.y / t.y
}
},
minElems: function(e, t) {
return {
x: Math.min(e.x, t.x),
y: Math.min(e.y, t.y)
}
},
maxElems: function(e, t) {
return {
x: Math.max(e.x, t.x),
y: Math.max(e.y, t.y)
}
},
randomUnit: function() {
return a.normalizeSafe(a.create(Math.random() - .5, Math.random() - .5), a.create(1, 0))
},
lerp: function(e, t, i) {
return a.add(a.mul(t, 1 - e), a.mul(i, e))
},
eq: function(e, t, i) {
var a = i || 1e-4;
return Math.abs(e.x - t.x) < a && Math.abs(e.y - t.y) < a
}
};
e.exports = a
},
"/rj8": function(e, t, i) {
"use strict";
function a() {
this.active = !1,
this.dirty = !1,
this.container = new n.Graphics,
this.container.alpha = 0,
this.clientData = {
label: "",
duration: 0,
keepAlive: !1,
elapsed: 0,
radius: 35,
lineWidth: 8,
fontWidth: 24
},
this.timerBackground = n.Sprite.fromImage("img/gui/timer-background.svg"),
this.timerBackground.anchor = new n.Point(.5,.5),
this.timerBackground.scale = new n.Point(1,1),
this.container.addChild(this.timerBackground),
this.innerCircle = new n.Graphics,
this.outerCircle = new n.Graphics,
this.container.addChild(this.innerCircle, this.outerCircle),
this.counterText = new n.Text,
this.counterText.anchor = new n.Point(.5,.5);
var e = {
fontFamily: "Arial, Helvetica, sans-serif",
fontWeight: "bold",
fontSize: this.clientData.fontWidth,
align: "center",
fill: 16777215,
stroke: 0,
strokeThickness: 3
};
this.counterText.style = e,
this.counterText.text = this.clientData.duration.toFixed(1),
this.container.addChild(this.counterText),
this.labelText = new n.Text,
this.labelText.anchor = new n.Point(.5,.5);
var t = {
fontFamily: "Arial, Helvetica, sans-serif",
fontWeight: "100",
fontSize: this.clientData.fontWidth,
align: "center",
fill: 16777215
};
this.labelText.style = t,
this.container.addChild(this.labelText),
this.screenScaleFactor = 1,
this.callback = null
}
var n = i("gKxX");
i("+0OL"),
i("Tf6H"),
i("/2+T");
a.prototype = {
init: function(e, t, i, a) {
this.active = !0,
this.clientData = {
label: i,
duration: t,
keepAlive: a,
elapsed: 0,
radius: 35,
lineWidth: 8,
fontWidth: 24
},
this.labelText.text = this.clientData.duration.toFixed(1),
this.callback = e,
this.container.visible = !0,
this.container.alpha = 1
},
destroy: function() {
this.container.destroy({
children: !0,
texture: !0
})
},
resize: function(e) {
this.screenScaleFactor = e
},
free: function(e) {
this.active = !1,
e && (this.container.visible = !1,
this.container.clear())
},
update: function(e, t, i) {
if (!this.active)
return void (this.container.alpha = this.clientData.keepAlive ? 1 : 0);
this.clientData.elapsed += e,
this.clientData.elapsed = Math.min(this.clientData.elapsed, this.clientData.duration),
(this.clientData.elapsed >= this.clientData.duration || t.dead) && (this.render(i),
this.free(),
this.callback && this.callback(t))
},
render: function(e) {
if (this.active) {
this.container.clear(),
this.outerCircle.clear(),
this.counterText.text = "",
this.labelText.text = "";
var t = Math.min(this.clientData.elapsed / this.clientData.duration, 1)
, i = {
x: e.screenWidth / 2,
y: e.screenHeight / 3 * this.screenScaleFactor
}
, a = Math.min(t, 1) * Math.PI * 2 - Math.PI / 2;
this.container.beginFill(0, .5),
this.outerCircle.lineStyle(.75 * this.clientData.lineWidth, 16777215),
this.outerCircle.arc(0, 0, this.clientData.radius, -Math.PI / 2, a, !1),
this.counterText.text = Math.max(0, this.clientData.duration - this.clientData.elapsed).toFixed(1);
var n = 2.5 * this.clientData.radius;
this.labelText.position.y = n,
this.labelText.text = this.clientData.label;
var r = 56 + this.clientData.label.length * this.clientData.fontWidth * .45
, o = 1.5 * this.clientData.fontWidth
, s = 0 - r / 2
, l = n - o / 2;
this.container.drawRoundedRect(s, l, r, o, 5),
this.container.position = {
x: i.x,
y: i.y
}
}
}
},
e.exports = {
PieTimer: a
}
},
"09pV": function(e, t, i) {
"use strict";
function a(e, t, i) {
return t in e ? Object.defineProperty(e, t, {
value: i,
enumerable: !0,
configurable: !0,
writable: !0
}) : e[t] = i,
e
}
function n(e, t) {
if (!(e instanceof t))
throw new TypeError("Cannot call a class as a function")
}
function r(e) {
return document.getElementById(e)
}
function o(e) {
return 0 == e.button
}
function s(e) {
return "which"in e ? 3 == e.which : 2 == e.button
}
function l(e, t, i) {
if (e instanceof Array)
for (var a = 0; a < e.length; a++)
l(e[a], void 0 !== i ? t[i] : t, a);
else if (e instanceof Object)
for (var n = Object.keys(e), r = 0; r < n.length; r++) {
var o = n[r];
l(e[o], void 0 !== i ? t[i] : t, o)
}
else
t[i] = e
}
function u(e, t, i) {
if (t instanceof Array) {
for (var a = [], n = 0; n < t.length; n++)
a[n] = u(e[n], t[n], i);
return a
}
if (t instanceof Object) {
for (var r = {}, o = Object.keys(t), s = 0; s < o.length; s++) {
var l = o[s];
r[l] = u(e[l], t[l], i)
}
return r
}
return e != t || i
}
function c() {
var e = [];
for (var t in g.items)
g.items.hasOwnProperty(t) && "scope" == g.items[t].type && e.push(t);
return e
}
function d() {
var e = [];
for (var t in g.items)
if (g.items.hasOwnProperty(t)) {
var i = g.items[t].type;
"heal" != i && "boost" != i && "ammo" != i || e.push(t)
}
return e
}
function h() {
return ["chest", "helmet", "backpack"]
}
var p = function() {
function e(e, t) {
for (var i = 0; i < t.length; i++) {
var a = t[i];
a.enumerable = a.enumerable || !1,
a.configurable = !0,
"value"in a && (a.writable = !0),
Object.defineProperty(e, a.key, a)
}
}
return function(t, i, a) {
return i && e(t.prototype, i),
a && e(t, a),
t
}
}()
, m = i("9xSA")
, g = i("+0OL")
, f = g.Action
, y = i("0od3")
, v = i("yp2f")
, b = i("/2+T")
, x = g.DamageType
, _ = v.PickupMsgType
, w = 6
, T = {
None: 0,
Cancel: 1,
Loot: 2,
Revive: 3,
Door: 4
}
, k = function e() {
n(this, e),
this.pickupMessage = {
message: "",
ticker: 0,
duration: 0,
opacity: 0
},
this.killFeed = [];
for (var t = 0; t < w; t++)
this.killFeed.push({
text: "",
color: "#000000",
offset: 0,
opacity: 0,
ticker: Number.MAX_VALUE
});
this.weapons = [];
for (var i = 0; i < g.WeaponSlot.Count; i++)
this.weapons[i] = {
slot: i,
name: "",
ammo: 0,
equipped: !1,
selectable: !1,
opacity: 0,
width: 0,
ticker: 0
};
this.ammo = {
current: 0,
remaining: 0,
displayCurrent: !1,
displayRemaining: !1
},
this.interaction = {
type: T.None,
text: "",
key: ""
},
this.scopes = [];
for (var a = c(), r = 0; r < a.length; r++)
this.scopes.push({
type: a[r],
visible: !1,
equipped: !1,
selectable: !1
});
this.loot = [];
for (var o = d(), s = 0; s < o.length; s++)
this.loot.push({
type: o[s],
count: 0,
maximum: 0,
selectable: !1,
width: 0,
ticker: 0
});
this.gear = [];
for (var l = h(), u = 0; u < l.length; u++)
this.gear.push({
type: l[u],
item: "",
selectable: !1,
width: 0,
ticker: 0
});
this.health = 100,
this.boost = 0,
this.downed = !1
}
, S = function() {
function e(t) {
var i = this;
n(this, e),
this.localization = t,
this.oldState = new k,
this.newState = new k,
this.frameCount = 0,
this.dom = {
pickupMessage: r("ui-pickup-message"),
killFeed: {
div: r("ui-killfeed-contents"),
lines: []
},
weapons: [],
ammo: {
current: r("ui-current-clip"),
remaining: r("ui-remaining-ammo")
},
interaction: {
div: r("ui-interaction"),
key: r("ui-interaction-press"),
text: r("ui-interaction-description")
},
health: {
inner: r("ui-health-actual"),
depleted: r("ui-health-depleted")
},
boost: {
div: r("ui-boost-counter"),
bars: [r("ui-boost-counter-0").firstElementChild, r("ui-boost-counter-1").firstElementChild, r("ui-boost-counter-2").firstElementChild, r("ui-boost-counter-3").firstElementChild]
},
scopes: [],
loot: [],
gear: []
};
for (var a = 0; a < w; a++) {
var l = "ui-killfeed-" + a
, u = r(l);
if (!u) {
u = document.createElement("div"),
u.id = l,
u.classList.add("killfeed-div");
var p = document.createElement("div");
p.classList.add("killfeed-text"),
u.appendChild(p),
this.dom.killFeed.div.appendChild(u)
}
this.dom.killFeed.lines.push({
line: u,
text: u.firstElementChild
})
}
for (var m = 0; m < 4; m++) {
var f = r("ui-weapon-id-" + (m + 1))
, y = {
div: f,
name: f.getElementsByClassName("ui-weapon-name")[0],
number: f.getElementsByClassName("ui-weapon-number")[0],
image: f.getElementsByClassName("ui-weapon-image")[0],
ammo: f.getElementsByClassName("ui-weapon-ammo-counter")[0]
};
this.dom.weapons.push(y)
}
for (var v = c(), b = 0; b < v.length; b++) {
var x = v[b]
, _ = {
scopeType: x,
div: r("ui-scope-" + x)
};
this.dom.scopes.push(_)
}
for (var T = d(), S = 0; S < T.length; S++) {
var M = T[S]
, P = r("ui-loot-" + M)
, E = {
lootType: M,
div: P,
count: P.getElementsByClassName("ui-loot-count")[0],
image: P.getElementsByClassName("ui-loot-image")[0],
overlay: P.getElementsByClassName("ui-loot-overlay")[0]
};
this.dom.loot.push(E)
}
for (var C = h(), O = 0; O < C.length; O++) {
var I = C[O]
, A = r("ui-armor-" + I)
, D = {
gearType: I,
div: A,
level: A.getElementsByClassName("ui-armor-level")[0],
image: A.getElementsByClassName("ui-armor-image")[0]
};
this.dom.gear.push(D)
}
this.uiEvents = [],
this.eventListeners = [];
for (var R = function(e, t, a) {
i.eventListeners.push({
event: e,
elem: t,
fn: a
}),
t.addEventListener(e, a)
}, L = [], j = function(e, t, i, a) {
L.push({
action: e,
type: t,
data: i,
div: a
})
}, F = 0; F < this.dom.weapons.length; F++)
j("use", "weapon", F, this.dom.weapons[F].div),
j("drop", "weapon", F, this.dom.weapons[F].div);
for (var B = 0; B < this.dom.scopes.length; B++) {
var N = this.dom.scopes[B];
j("use", "scope", N.scopeType, N.div),
"1xscope" != N.scopeType && j("drop", "loot", N.scopeType, N.div)
}
for (var z = 0; z < this.dom.loot.length; z++) {
var U = this.dom.loot[z]
, H = g.items[U.lootType];
"heal" != H.type && "boost" != H.type || j("use", "loot", U.lootType, U.div),
j("drop", "loot", U.lootType, U.div)
}
for (var G = 0; G < this.dom.gear.length; G++) {
var V = this.dom.gear[G];
"backpack" != V.gearType && j("drop", "loot", V.gearType, V.div)
}
for (var W = 0; W < L.length; W++)
!function(e) {
var t = L[e]
, a = function() {
i.uiEvents.push({
action: t.action,
type: t.type,
data: t.data
})
};
R("mousedown", t.div, function(e) {
("use" == t.action && o(e) || "drop" == t.action && s(e)) && (e.stopPropagation(),
"drop" == t.action && a())
}),
R("click", t.div, function(e) {
"use" == t.action && o(e) && a()
})
}(W)
}
return p(e, [{
key: "free",
value: function() {
for (var e = 0; e < this.eventListeners.length; e++) {
var t = this.eventListeners[e];
t.elem.removeEventListener(t.event, t.fn)
}
}
}, {
key: "flushInput",
value: function() {
this.uiEvents = []
}
}, {
key: "update",
value: function(e, t, i, a, n, r) {
var o = this.newState;
o.pickupMessage.ticker += e;
var s = o.pickupMessage.ticker
, c = o.pickupMessage.duration;
o.pickupMessage.opacity = y.smoothstep(s, 0, .2) * (1 - y.smoothstep(s, c, c + .2));
for (var d = 0, h = 0; h < o.killFeed.length; h++) {
var p = o.killFeed[h];
p.ticker += e;
var v = p.ticker;
p.offset = d,
p.opacity = y.smoothstep(v, 0, .25) * (1 - y.smoothstep(v, 6, 6.5)),
d += y.min(v / .25, 1)
}
o.health = t.netData.dead ? 0 : y.max(t.netData.health, 1),
o.boost = t.localData.boost,
o.downed = t.netData.downed;
for (var x = T.None, _ = null, w = null, k = 0, S = r.obstaclePool.getPool(), M = 0; M < S.length; M++) {
var P = S[M];
if (!P.dead && P.isDoor && P.door.canOpen) {
var E = m.intersectCircle(P.collider, t.netData.pos, P.door.interactionRad);
E && E.pen >= k && (w = P,
k = E.pen)
}
}
w && (x = T.Door,
_ = w);
var C = n.getClosestLoot();
if (C && !t.netData.dead && !t.netData.downed) {
var O = g.items[C.data.name]
, I = t.hasWeaponInSlot(g.WeaponSlot.Primary)
, A = t.hasWeaponInSlot(g.WeaponSlot.Secondary);
I && A && "gun" == O.type && "gun" != t.equippedWeaponType() || (x = T.Loot,
_ = C)
}
if (t.netData.actionType == f.None && !t.netData.downed)
for (var D = a.getPlayerInfo(t.__id).teamId, R = a.playerPool.getPool(), L = 0; L < R.length; L++) {
var j = R[L]
, F = a.getPlayerInfo(j.__id).teamId;
if (j.__id != t.__id && D == F && j.netData.downed && !j.netData.dead && j.netData.actionType != f.Revive) {
var B = b.length(b.sub(j.netData.pos, t.netData.pos));
B < g.player.reviveMaxRange && (x = T.Revive,
_ = t)
}
}
t.netData.actionType == f.Revive && t.netData.downed && (x = T.None,
_ = null),
(t.netData.actionType == f.UseItem || t.netData.actionType == f.Revive && !t.netData.downed) && (x = T.Cancel,
_ = null),
o.interaction.type = x,
o.interaction.text = this.getInteractionText(x, _),
o.interaction.key = this.getInteractionKey(x);
for (var N = 0; N < t.localData.weapons.length; N++) {
var z = t.localData.weapons[N]
, U = o.weapons[N];
U.name = z.name,
U.ammo = z.ammo,
"" != z.name && "throwable" == g.items[z.name].type && (U.ammo = t.localData.inventory[z.name]);
var H = U.equipped;
U.equipped = N == t.localData.curWeapIdx,
U.selectable = "" != z.name && !i;
var G = U.equipped ? 1 : .6
, V = G - U.opacity
, W = y.min(V, y.sign(V) * e / .15);
U.opacity = y.clamp(U.opacity + W, 0, 1),
U.ticker += e,
U.equipped && H || (U.ticker = 0),
this.frameCount < 2 && (U.ticker = 1);
var q = y.min(U.ticker / .09, Math.PI)
, X = Math.sin(q);
U.width = X < .001 ? 0 : X
}
var K = o.weapons[t.localData.curWeapIdx]
, Y = g.items[K.name]
, Z = K.ammo
, J = "throwable" == Y.type ? 0 : t.localData.inventory[Y.ammo];
o.ammo.current = Z,
o.ammo.remaining = J,
o.ammo.displayCurrent = "melee" != Y.type,
o.ammo.displayRemaining = J > 0;
for (var Q = 0; Q < o.scopes.length; Q++) {
var $ = o.scopes[Q];
$.visible = t.localData.inventory[$.type] > 0,
$.equipped = $.visible && t.localData.curScope == $.type,
$.selectable = $.visible && !i
}
for (var ee = t.getBagLevel(), te = 0; te < o.loot.length; te++) {
var ie = o.loot[te]
, ae = ie.count;
ie.count = t.localData.inventory[ie.type] || 0,
ie.maximum = g.bagSizes[ie.type][ee],
ie.selectable = ie.count > 0 && !i,
ie.count > ae && (ie.ticker = 0),
this.frameCount < 2 && (ie.ticker = 1),
ie.ticker += e;
var ne = y.min(ie.ticker / .05, Math.PI)
, re = Math.sin(ne);
ie.width = re < .001 ? 0 : re
}
for (var oe = 0; oe < o.gear.length; oe++) {
var se = o.gear[oe]
, le = "";
"chest" == se.type ? le = t.netData.chest : "helmet" == se.type ? le = t.netData.helmet : "backpack" == se.type && "backpack00" == (le = t.netData.backpack) && (le = "");
var ue = se.item;
se.item = le,
se.selectable = "" != le && !i,
ue != se.item && (se.ticker = 0),
this.frameCount < 2 && (se.ticker = 1),
se.ticker += e;
var ce = y.min(se.ticker / .05, Math.PI)
, de = Math.sin(ce);
se.width = de < .001 ? 0 : de
}
var he = u(this.oldState, this.newState, 0 == this.frameCount++);
this.render(he, this.newState),
l(this.newState, this.oldState)
}
}, {
key: "render",
value: function(e, t) {
var i = this.dom;
e.pickupMessage.message && (i.pickupMessage.innerHTML = t.pickupMessage.message),
e.pickupMessage.opacity && (i.pickupMessage.style.opacity = t.pickupMessage.opacity);
for (var a = 0; a < e.killFeed.length; a++) {
var n = e.killFeed[a]
, r = i.killFeed.lines[a]
, o = t.killFeed[a];
n.text && (r.text.innerHTML = o.text),
n.offset && (r.line.style.top = Math.floor(35 * o.offset) + "px"),
n.color && (r.text.style.color = o.color),
n.opacity && (r.line.style.opacity = o.opacity)
}
if (e.health || e.downed) {
for (var s = [{
health: 100,
color: [179, 179, 179]
}, {
health: 100,
color: [255, 255, 255]
}, {
health: 75,
color: [255, 255, 255]
}, {
health: 75,
color: [255, 158, 158]
}, {
health: 25,
color: [255, 82, 82]
}, {
health: 25,
color: [255, 0, 0]
}, {
health: 0,
color: [255, 0, 0]
}], l = 0, u = Math.ceil(t.health); s[l].health > u && l < s.length - 1; )
l++;
var c = s[y.max(l - 1, 0)]
, d = s[l]
, h = y.delerp(t.health, c.health, d.health)
, p = [Math.floor(y.lerp(h, c.color[0], d.color[0])), Math.floor(y.lerp(h, c.color[1], d.color[1])), Math.floor(y.lerp(h, c.color[2], d.color[2]))];
t.downed && (p = [255, 0, 0]),
i.health.inner.style.backgroundColor = "rgba(" + p[0] + ", " + p[1] + ", " + p[2] + ", 1.0)",
i.health.inner.style.width = t.health + "%",
i.health.depleted.style.width = t.health + "%",
i.health.depleted.style.display = t.health > 0 ? "block" : "none",
t.health > 25 ? i.health.inner.classList.remove("ui-bar-danger") : i.health.inner.classList.add("ui-bar-danger")
}
if (e.boost) {
for (var m = g.player.boostBreakpoints, f = 0, v = 0; v < m.length; v++)
f += m[v];
for (var b = t.boost / 100, x = 0; x < i.boost.bars.length; x++) {
var _ = m[x] / f
, w = y.clamp(b / _, 0, 1);
b = y.max(b - _, 0),
i.boost.bars[x].style.width = 100 * w + "%"
}
i.boost.div.style.opacity = 0 == t.boost ? 0 : 1
}
e.interaction.type && (i.interaction.div.style.display = t.interaction.type == T.None ? "none" : "flex"),
e.interaction.text && (i.interaction.text.innerHTML = t.interaction.text),
e.interaction.key && (i.interaction.key.innerHTML = t.interaction.key);
for (var k = 0; k < e.weapons.length; k++) {
var S = e.weapons[k]
, M = i.weapons[k]
, P = t.weapons[k];
if (S.name) {
var E = "" != P.name
, C = ""
, O = "";
E && (C = this.localization.translate("game-hud-" + P.name) || this.localization.translate("game-" + P.name),
O = g.items[P.name].lootImg.sprite),
M.name.innerHTML = C,
M.image.src = O,
M.image.style.display = E ? "inline" : "none"
}
if (S.equipped && (M.div.style.backgroundColor = P.equipped ? "rgba(0, 0, 0, 0.4)" : "rgba(0, 0, 0, 0)"),
S.selectable && (M.div.style.pointerEvents = "" != P.name && P.selectable ? "auto" : "none"),
S.width) {
var I = y.lerp(P.width, 83.33, 100);
M.div.style.width = I + "%"
}
S.opacity && (M.div.style.opacity = P.opacity),
S.ammo && M.ammo && (M.ammo.innerHTML = P.ammo,
M.ammo.style.display = P.ammo > 0 ? "block" : "none")
}
if (e.ammo.current) {
var A = t.ammo.current;
i.ammo.current.innerHTML = A,
i.ammo.current.style.color = A > 0 ? "white" : "red"
}
if (e.ammo.remaining) {
var D = t.ammo.remaining;
i.ammo.remaining.innerHTML = D,
i.ammo.remaining.style.color = D > 0 ? "white" : "red"
}
e.ammo.displayCurrent && (i.ammo.current.style.opacity = t.ammo.displayCurrent ? 1 : 0),
e.ammo.displayRemaining && (i.ammo.remaining.style.opacity = t.ammo.displayRemaining ? 1 : 0);
for (var R = 0; R < e.scopes.length; R++) {
var L = e.scopes[R]
, j = i.scopes[R]
, F = t.scopes[R];
L.visible && (j.div.style.display = F.visible ? "inline-block" : "none"),
L.equipped && (F.equipped ? (j.div.classList.add("ui-zoom-active"),
j.div.classList.remove("ui-zoom-inactive")) : (j.div.classList.add("ui-zoom-inactive"),
j.div.classList.remove("ui-zoom-active"))),
L.selectable && (j.div.style.pointerEvents = F.selectable ? "auto" : "none")
}
for (var B = 0; B < e.loot.length; B++) {
var N = e.loot[B]
, z = i.loot[B]
, U = t.loot[B];
if ((N.count || N.maximum) && (z.count.innerHTML = U.count,
z.div.style.opacity = U.count > 0 ? 1 : .25,
z.div.style.color = U.count == U.maximum ? "#ff9900" : "#ffffff"),
N.width) {
var H = 1 + .33 * U.width
, G = "scale(" + H + ", " + H + ")";
z.image.style.transform = G,
z.overlay && (z.overlay.style.transform = G)
}
N.selectable && (z.div.style.pointerEvents = U.selectable ? "auto" : "none")
}
for (var V = 0; V < e.gear.length; V++) {
var W = e.gear[V]
, q = i.gear[V]
, X = t.gear[V];
if (W.item) {
var K = "" != X.item ? g.items[X.item] : null
, Y = K ? K.level : 0;
q.div.style.display = K ? "block" : "none",
q.level.innerHTML = this.localization.translate("game-level-" + Y),
q.level.style.color = 3 == Y ? "#ff9900" : "#ffffff",
q.image.src = K ? K.lootImg.sprite : ""
}
if (W.selectable && (q.div.style.pointerEvents = X.selectable ? "auto" : "none"),
W.width) {
var Z = 1 + .33 * X.width;
q.image.style.transform = "scale(" + Z + ", " + Z + ")"
}
}
}
}, {
key: "displayPickupMessage",
value: function(e) {
var t = this.newState.pickupMessage;
t.message = this.getPickupMessageText(e),
t.ticker = 0,
t.duration = 3
}
}, {
key: "addKillFeed",
value: function(e, t) {
var i = this.newState.killFeed
, a = i[i.length - 1];
a.text = e,
a.color = t,
a.ticker = 0,
i.sort(function(e, t) {
return e.ticker - t.ticker
})
}
}, {
key: "getKillFeedText",
value: function(e, t, i, a, n) {
switch (a) {
case x.Player:
return t + " " + this.localization.translate(n ? "game-knocked-out" : "game-killed") + " " + e + " " + this.localization.translate("game-with") + " " + i;
case x.Bleeding:
var r = this.localization.translate(t ? "game-finally-killed" : "game-finally-bled-out");
return t ? t + " " + r + " " + e : e + " " + r;
case x.Gas:
var o = void 0;
return n ? (t = this.localization.translate("game-the-red-zone"),
o = this.localization.translate("game-knocked-out")) : o = this.localization.translate(t ? "game-finally-killed" : "game-died-outside"),
t ? t + " " + o + " " + e : e + " " + o;
default:
return ""
}
}
}, {
key: "getKillFeedColor",
value: function(e, t, i) {
return e == t ? "#d1777c" : e == i ? "#00bfff" : "#efeeee"
}
}, {
key: "getPickupMessageText",
value: function(e) {
var t, i = (t = {},
a(t, _.Full, "game-not-enough-space"),
a(t, _.AlreadyOwned, "game-item-already-owned"),
a(t, _.AlreadyEquipped, "game-item-already-equipped"),
a(t, _.BetterItemEquipped, "game-better-item-equipped"),
t), n = i[e] || i[_.Full];
return this.localization.translate(n)
}
}, {
key: "getInteractionText",
value: function(e, t) {
switch (e) {
case T.None:
return "";
case T.Cancel:
return this.localization.translate("game-cancel");
case T.Revive:
return this.localization.translate("game-revive-teammate");
case T.Door:
return this.localization.translate(t.door.open ? "game-close-door" : "game-open-door");
case T.Loot:
var i = this.localization.translate("game-" + t.data.name) || t.data.name;
return t.data.count > 1 && (i += " (" + t.data.count + ")"),
i;
default:
return ""
}
}
}, {
key: "getInteractionKey",
value: function(e) {
return e == T.Cancel ? "X" : "F"
}
}]),
e
}();
e.exports = {
Ui2Manager: S
}
},
"0F1D": function(e, t) {
(function() {
/*!
* SoundJS
* Visit http://createjs.com/ for documentation, updates and examples.
*
* Copyright (c) 2010 gskinner.com, inc.
*
* Permission is hereby granted, free of charge, to any person
* obtaining a copy of this software and associated documentation
* files (the "Software"), to deal in the Software without
* restriction, including without limitation the rights to use,
* copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following
* conditions:
*
* The above copyright notice and this permission notice shall be
* included in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
* OTHER DEALINGS IN THE SOFTWARE.
*/
this.createjs = this.createjs || {},
function() {
var e = createjs.SoundJS = createjs.SoundJS || {};
e.version = "NEXT",
e.buildDate = "Thu, 12 Oct 2017 16:33:45 GMT"
}(),
this.createjs = this.createjs || {},
createjs.extend = function(e, t) {
"use strict";
function i() {
this.constructor = e
}
return i.prototype = t.prototype,
e.prototype = new i
}
,
this.createjs = this.createjs || {},
createjs.promote = function(e, t) {
"use strict";
var i = e.prototype
, a = Object.getPrototypeOf && Object.getPrototypeOf(i) || i.__proto__;
if (a) {
i[(t += "_") + "constructor"] = a.constructor;
for (var n in a)
i.hasOwnProperty(n) && "function" == typeof a[n] && (i[t + n] = a[n])
}
return e
}
,
this.createjs = this.createjs || {},
createjs.deprecate = function(e, t) {
"use strict";
return function() {
var i = "Deprecated property or method '" + t + "'. See docs for info.";
return console && (console.warn ? console.warn(i) : console.log(i)),
e && e.apply(this, arguments)
}
}
,
this.createjs = this.createjs || {},
createjs.indexOf = function(e, t) {
"use strict";
for (var i = 0, a = e.length; i < a; i++)
if (t === e[i])
return i;
return -1
}
,
this.createjs = this.createjs || {},
function() {
"use strict";
createjs.proxy = function(e, t) {
var i = Array.prototype.slice.call(arguments, 2);
return function() {
return e.apply(t, Array.prototype.slice.call(arguments, 0).concat(i))
}
}
}(),
this.createjs = this.createjs || {},
function() {
"use strict";
function e() {
throw "BrowserDetect cannot be instantiated"
}
var t = e.agent = window.navigator.userAgent;
e.isWindowPhone = t.indexOf("IEMobile") > -1 || t.indexOf("Windows Phone") > -1,
e.isFirefox = t.indexOf("Firefox") > -1,
e.isOpera = null != window.opera,
e.isChrome = t.indexOf("Chrome") > -1,
e.isIOS = (t.indexOf("iPod") > -1 || t.indexOf("iPhone") > -1 || t.indexOf("iPad") > -1) && !e.isWindowPhone,
e.isAndroid = t.indexOf("Android") > -1 && !e.isWindowPhone,
e.isBlackberry = t.indexOf("Blackberry") > -1,
createjs.BrowserDetect = e
}(),
this.createjs = this.createjs || {},
function() {
"use strict";
function e() {
this._listeners = null,
this._captureListeners = null
}
var t = e.prototype;
e.initialize = function(e) {
e.addEventListener = t.addEventListener,
e.on = t.on,
e.removeEventListener = e.off = t.removeEventListener,
e.removeAllEventListeners = t.removeAllEventListeners,
e.hasEventListener = t.hasEventListener,
e.dispatchEvent = t.dispatchEvent,
e._dispatchEvent = t._dispatchEvent,
e.willTrigger = t.willTrigger
}
,
t.addEventListener = function(e, t, i) {
var a;
a = i ? this._captureListeners = this._captureListeners || {} : this._listeners = this._listeners || {};
var n = a[e];
return n && this.removeEventListener(e, t, i),
n = a[e],
n ? n.push(t) : a[e] = [t],
t
}
,
t.on = function(e, t, i, a, n, r) {
return t.handleEvent && (i = i || t,
t = t.handleEvent),
i = i || this,
this.addEventListener(e, function(e) {
t.call(i, e, n),
a && e.remove()
}, r)
}
,
t.removeEventListener = function(e, t, i) {
var a = i ? this._captureListeners : this._listeners;
if (a) {
var n = a[e];
if (n)
for (var r = 0, o = n.length; r < o; r++)
if (n[r] == t) {
1 == o ? delete a[e] : n.splice(r, 1);
break
}
}
}
,
t.off = t.removeEventListener,
t.removeAllEventListeners = function(e) {
e ? (this._listeners && delete this._listeners[e],
this._captureListeners && delete this._captureListeners[e]) : this._listeners = this._captureListeners = null
}
,
t.dispatchEvent = function(e, t, i) {
if ("string" == typeof e) {
var a = this._listeners;
if (!(t || a && a[e]))
return !0;
e = new createjs.Event(e,t,i)
} else
e.target && e.clone && (e = e.clone());
try {
e.target = this
} catch (e) {}
if (e.bubbles && this.parent) {
for (var n = this, r = [n]; n.parent; )
r.push(n = n.parent);
var o, s = r.length;
for (o = s - 1; o >= 0 && !e.propagationStopped; o--)
r[o]._dispatchEvent(e, 1 + (0 == o));
for (o = 1; o < s && !e.propagationStopped; o++)
r[o]._dispatchEvent(e, 3)
} else
this._dispatchEvent(e, 2);
return !e.defaultPrevented
}
,
t.hasEventListener = function(e) {
var t = this._listeners
, i = this._captureListeners;
return !!(t && t[e] || i && i[e])
}
,
t.willTrigger = function(e) {
for (var t = this; t; ) {
if (t.hasEventListener(e))
return !0;
t = t.parent
}
return !1
}
,
t.toString = function() {
return "[EventDispatcher]"
}
,
t._dispatchEvent = function(e, t) {
var i, a, n = t <= 2 ? this._captureListeners : this._listeners;
if (e && n && (a = n[e.type]) && (i = a.length)) {
try {
e.currentTarget = this
} catch (e) {}
try {
e.eventPhase = 0 | t
} catch (e) {}
e.removed = !1,
a = a.slice();
for (var r = 0; r < i && !e.immediatePropagationStopped; r++) {
var o = a[r];
o.handleEvent ? o.handleEvent(e) : o(e),
e.removed && (this.off(e.type, o, 1 == t),
e.removed = !1)
}
}
2 === t && this._dispatchEvent(e, 2.1)
}
,
createjs.EventDispatcher = e
}(),
this.createjs = this.createjs || {},
function() {
"use strict";
function e(e, t, i) {
this.type = e,
this.target = null,
this.currentTarget = null,
this.eventPhase = 0,
this.bubbles = !!t,
this.cancelable = !!i,
this.timeStamp = (new Date).getTime(),
this.defaultPrevented = !1,
this.propagationStopped = !1,
this.immediatePropagationStopped = !1,
this.removed = !1
}
var t = e.prototype;
t.preventDefault = function() {
this.defaultPrevented = this.cancelable && !0
}
,
t.stopPropagation = function() {
this.propagationStopped = !0
}
,
t.stopImmediatePropagation = function() {
this.immediatePropagationStopped = this.propagationStopped = !0
}
,
t.remove = function() {
this.removed = !0
}
,
t.clone = function() {
return new e(this.type,this.bubbles,this.cancelable)
}
,
t.set = function(e) {
for (var t in e)
this[t] = e[t];
return this
}
,
t.toString = function() {
return "[Event (type=" + this.type + ")]"
}
,
createjs.Event = e
}(),
this.createjs = this.createjs || {},
function() {
"use strict";
function e(e, t, i) {
this.Event_constructor("error"),
this.title = e,
this.message = t,
this.data = i
}
createjs.extend(e, createjs.Event).clone = function() {
return new createjs.ErrorEvent(this.title,this.message,this.data)
}
,
createjs.ErrorEvent = createjs.promote(e, "Event")
}(),
this.createjs = this.createjs || {},
function(e) {
"use strict";
function t(e, t) {
this.Event_constructor("progress"),
this.loaded = e,
this.total = null == t ? 1 : t,
this.progress = 0 == t ? 0 : this.loaded / this.total
}
createjs.extend(t, createjs.Event).clone = function() {
return new createjs.ProgressEvent(this.loaded,this.total)
}
,
createjs.ProgressEvent = createjs.promote(t, "Event")
}(window),
this.createjs = this.createjs || {},
function() {
"use strict";
function e() {
this.src = null,
this.type = null,
this.id = null,
this.maintainOrder = !1,
this.callback = null,
this.data = null,
this.method = createjs.Methods.GET,
this.values = null,
this.headers = null,
this.withCredentials = !1,
this.mimeType = null,
this.crossOrigin = null,
this.loadTimeout = i.LOAD_TIMEOUT_DEFAULT
}
var t = e.prototype = {}
, i = e;
i.LOAD_TIMEOUT_DEFAULT = 8e3,
i.create = function(t) {
if ("string" == typeof t) {
var a = new e;
return a.src = t,
a
}
if (t instanceof i)
return t;
if (t instanceof Object && t.src)
return null == t.loadTimeout && (t.loadTimeout = i.LOAD_TIMEOUT_DEFAULT),
t;
throw new Error("Type not recognized.")
}
,
t.set = function(e) {
for (var t in e)
this[t] = e[t];
return this
}
,
createjs.LoadItem = i
}(),
this.createjs = this.createjs || {},
function() {
var e = {};
e.POST = "POST",
e.GET = "GET",
createjs.Methods = e
}(),
this.createjs = this.createjs || {},
function() {
var e = {};
e.BINARY = "binary",
e.CSS = "css",
e.FONT = "font",
e.FONTCSS = "fontcss",
e.IMAGE = "image",
e.JAVASCRIPT = "javascript",
e.JSON = "json",
e.JSONP = "jsonp",
e.MANIFEST = "manifest",
e.SOUND = "sound",
e.VIDEO = "video",
e.SPRITESHEET = "spritesheet",
e.SVG = "svg",
e.TEXT = "text",
e.XML = "xml",
createjs.Types = e
}(),
function() {
var e = {};
e.a = function() {
return e.el("a")
}
,
e.svg = function() {
return e.el("svg")
}
,
e.object = function() {
return e.el("object")
}
,
e.image = function() {
return e.el("image")
}
,
e.img = function() {
return e.el("img")
}
,
e.style = function() {
return e.el("style")
}
,
e.link = function() {
return e.el("link")
}
,
e.script = function() {
return e.el("script")
}
,
e.audio = function() {
return e.el("audio")
}
,
e.video = function() {
return e.el("video")
}
,
e.text = function(e) {
return document.createTextNode(e)
}
,
e.el = function(e) {
return document.createElement(e)
}
,
createjs.Elements = e
}(),
function() {
var e = {
container: null
};
e.appendToHead = function(t) {
e.getHead().appendChild(t)
}
,
e.appendToBody = function(t) {
if (null == e.container) {
e.container = document.createElement("div"),
e.container.id = "preloadjs-container";
var i = e.container.style;
i.visibility = "hidden",
i.position = "absolute",
i.width = e.container.style.height = "10px",
i.overflow = "hidden",
i.transform = i.msTransform = i.webkitTransform = i.oTransform = "translate(-10px, -10px)",
e.getBody().appendChild(e.container)
}
e.container.appendChild(t)
}
,
e.getHead = function() {
return document.head || document.getElementsByTagName("head")[0]
}
,
e.getBody = function() {
return document.body || document.getElementsByTagName("body")[0]
}
,
e.removeChild = function(e) {
e.parent && e.parent.removeChild(e)
}
,
e.isImageTag = function(e) {
return e instanceof HTMLImageElement
}
,
e.isAudioTag = function(e) {
return !!window.HTMLAudioElement && e instanceof HTMLAudioElement
}
,
e.isVideoTag = function(e) {
return !!window.HTMLVideoElement && e instanceof HTMLVideoElement
}
,
createjs.DomUtils = e
}(),
function() {
var e = {};
e.isBinary = function(e) {
switch (e) {
case createjs.Types.IMAGE:
case createjs.Types.BINARY:
return !0;
default:
return !1
}
}
,
e.isText = function(e) {
switch (e) {
case createjs.Types.TEXT:
case createjs.Types.JSON:
case createjs.Types.MANIFEST:
case createjs.Types.XML:
case createjs.Types.CSS:
case createjs.Types.SVG:
case createjs.Types.JAVASCRIPT:
case createjs.Types.SPRITESHEET:
return !0;
default:
return !1
}
}
,
e.getTypeByExtension = function(e) {
if (null == e)
return createjs.Types.TEXT;
switch (e.toLowerCase()) {
case "jpeg":
case "jpg":
case "gif":
case "png":
case "webp":
case "bmp":
return createjs.Types.IMAGE;
case "ogg":
case "mp3":
case "webm":
return createjs.Types.SOUND;
case "mp4":
case "webm":
case "ts":
return createjs.Types.VIDEO;
case "json":
return createjs.Types.JSON;
case "xml":
return createjs.Types.XML;
case "css":
return createjs.Types.CSS;
case "js":
return createjs.Types.JAVASCRIPT;
case "svg":
return createjs.Types.SVG;
default:
return createjs.Types.TEXT
}
}
,
createjs.RequestUtils = e
}(),
function() {
var e = {};
e.ABSOLUTE_PATT = /^(?:\w+:)?\/{2}/i,
e.RELATIVE_PATT = /^[.\/]*?\//i,
e.EXTENSION_PATT = /\/?[^\/]+\.(\w{1,5})$/i,
e.parseURI = function(t) {
var i = {
absolute: !1,
relative: !1,
protocol: null,
hostname: null,
port: null,
pathname: null,
search: null,
hash: null,
host: null
};
if (null == t)
return i;
var a = createjs.Elements.a();
a.href = t;
for (var n in i)
n in a && (i[n] = a[n]);
var r = t.indexOf("?");
r > -1 && (t = t.substr(0, r));
var o;
return e.ABSOLUTE_PATT.test(t) ? i.absolute = !0 : e.RELATIVE_PATT.test(t) && (i.relative = !0),
(o = t.match(e.EXTENSION_PATT)) && (i.extension = o[1].toLowerCase()),
i
}
,
e.formatQueryString = function(e, t) {
if (null == e)
throw new Error("You must specify data.");
var i = [];
for (var a in e)
i.push(a + "=" + escape(e[a]));
return t && (i = i.concat(t)),
i.join("&")
}
,
e.buildURI = function(e, t) {
if (null == t)
return e;
var i = []
, a = e.indexOf("?");
if (-1 != a) {
var n = e.slice(a + 1);
i = i.concat(n.split("&"))
}
return -1 != a ? e.slice(0, a) + "?" + this.formatQueryString(t, i) : e + "?" + this.formatQueryString(t, i)
}
,
e.isCrossDomain = function(e) {
var t = createjs.Elements.a();
t.href = e.src;
var i = createjs.Elements.a();
return i.href = location.href,
"" != t.hostname && (t.port != i.port || t.protocol != i.protocol || t.hostname != i.hostname)
}
,
e.isLocal = function(e) {
var t = createjs.Elements.a();
return t.href = e.src,
"" == t.hostname && "file:" == t.protocol
}
,
createjs.URLUtils = e
}(),
this.createjs = this.createjs || {},
function() {
"use strict";
function e(e, t, i) {
this.EventDispatcher_constructor(),
this.loaded = !1,
this.canceled = !1,
this.progress = 0,
this.type = i,
this.resultFormatter = null,
this._item = e ? createjs.LoadItem.create(e) : null,
this._preferXHR = t,
this._result = null,
this._rawResult = null,
this._loadedItems = null,
this._tagSrcAttribute = null,
this._tag = null
}
var t = createjs.extend(e, createjs.EventDispatcher)
, i = e;
try {
Object.defineProperties(i, {
POST: {
get: createjs.deprecate(function() {
return createjs.Methods.POST
}, "AbstractLoader.POST")
},
GET: {
get: createjs.deprecate(function() {
return createjs.Methods.GET
}, "AbstractLoader.GET")
},
BINARY: {
get: createjs.deprecate(function() {
return createjs.Types.BINARY
}, "AbstractLoader.BINARY")
},
CSS: {
get: createjs.deprecate(function() {
return createjs.Types.CSS
}, "AbstractLoader.CSS")
},
FONT: {
get: createjs.deprecate(function() {
return createjs.Types.FONT
}, "AbstractLoader.FONT")
},
FONTCSS: {
get: createjs.deprecate(function() {
return createjs.Types.FONTCSS
}, "AbstractLoader.FONTCSS")
},
IMAGE: {
get: createjs.deprecate(function() {
return createjs.Types.IMAGE
}, "AbstractLoader.IMAGE")
},
JAVASCRIPT: {
get: createjs.deprecate(function() {
return createjs.Types.JAVASCRIPT
}, "AbstractLoader.JAVASCRIPT")
},
JSON: {
get: createjs.deprecate(function() {
return createjs.Types.JSON
}, "AbstractLoader.JSON")
},
JSONP: {
get: createjs.deprecate(function() {
return createjs.Types.JSONP
}, "AbstractLoader.JSONP")
},
MANIFEST: {
get: createjs.deprecate(function() {
return createjs.Types.MANIFEST
}, "AbstractLoader.MANIFEST")
},
SOUND: {
get: createjs.deprecate(function() {
return createjs.Types.SOUND
}, "AbstractLoader.SOUND")
},
VIDEO: {
get: createjs.deprecate(function() {
return createjs.Types.VIDEO
}, "AbstractLoader.VIDEO")
},
SPRITESHEET: {
get: createjs.deprecate(function() {
return createjs.Types.SPRITESHEET
}, "AbstractLoader.SPRITESHEET")
},
SVG: {
get: createjs.deprecate(function() {
return createjs.Types.SVG
}, "AbstractLoader.SVG")
},
TEXT: {
get: createjs.deprecate(function() {
return createjs.Types.TEXT
}, "AbstractLoader.TEXT")
},
XML: {
get: createjs.deprecate(function() {
return createjs.Types.XML
}, "AbstractLoader.XML")
}
})
} catch (e) {}
t.getItem = function() {
return this._item
}
,
t.getResult = function(e) {
return e ? this._rawResult : this._result
}
,
t.getTag = function() {
return this._tag
}
,
t.setTag = function(e) {
this._tag = e
}
,
t.load = function() {
this._createRequest(),
this._request.on("complete", this, this),
this._request.on("progress", this, this),
this._request.on("loadStart", this, this),
this._request.on("abort", this, this),
this._request.on("timeout", this, this),
this._request.on("error", this, this);
var e = new createjs.Event("initialize");
e.loader = this._request,
this.dispatchEvent(e),
this._request.load()
}
,
t.cancel = function() {
this.canceled = !0,
this.destroy()
}
,
t.destroy = function() {
this._request && (this._request.removeAllEventListeners(),
this._request.destroy()),
this._request = null,
this._item = null,
this._rawResult = null,
this._result = null,
this._loadItems = null,
this.removeAllEventListeners()
}
,
t.getLoadedItems = function() {
return this._loadedItems
}
,
t._createRequest = function() {
this._preferXHR ? this._request = new createjs.XHRRequest(this._item) : this._request = new createjs.TagRequest(this._item,this._tag || this._createTag(),this._tagSrcAttribute)
}
,
t._createTag = function(e) {
return null
}
,
t._sendLoadStart = function() {
this._isCanceled() || this.dispatchEvent("loadstart")
}
,
t._sendProgress = function(e) {
if (!this._isCanceled()) {
var t = null;
"number" == typeof e ? (this.progress = e,
t = new createjs.ProgressEvent(this.progress)) : (t = e,
this.progress = e.loaded / e.total,
t.progress = this.progress,
(isNaN(this.progress) || this.progress == 1 / 0) && (this.progress = 0)),
this.hasEventListener("progress") && this.dispatchEvent(t)
}
}
,
t._sendComplete = function() {
if (!this._isCanceled()) {
this.loaded = !0;
var e = new createjs.Event("complete");
e.rawResult = this._rawResult,
null != this._result && (e.result = this._result),
this.dispatchEvent(e)
}
}
,
t._sendError = function(e) {
!this._isCanceled() && this.hasEventListener("error") && (null == e && (e = new createjs.ErrorEvent("PRELOAD_ERROR_EMPTY")),
this.dispatchEvent(e))
}
,
t._isCanceled = function() {
return !(null != window.createjs && !this.canceled)
}
,
t.resultFormatter = null,
t.handleEvent = function(e) {
switch (e.type) {
case "complete":
this._rawResult = e.target._response;
var t = this.resultFormatter && this.resultFormatter(this);
t instanceof Function ? t.call(this, createjs.proxy(this._resultFormatSuccess, this), createjs.proxy(this._resultFormatFailed, this)) : (this._result = t || this._rawResult,
this._sendComplete());
break;
case "progress":
this._sendProgress(e);
break;
case "error":
this._sendError(e);
break;
case "loadstart":
this._sendLoadStart();
break;
case "abort":
case "timeout":
this._isCanceled() || this.dispatchEvent(new createjs.ErrorEvent("PRELOAD_" + e.type.toUpperCase() + "_ERROR"))
}
}
,
t._resultFormatSuccess = function(e) {
this._result = e,
this._sendComplete()
}
,
t._resultFormatFailed = function(e) {
this._sendError(e)
}
,
t.toString = function() {
return "[PreloadJS AbstractLoader]"
}
,
createjs.AbstractLoader = createjs.promote(e, "EventDispatcher")
}(),
this.createjs = this.createjs || {},
function() {
"use strict";
function e(e, t, i) {
this.AbstractLoader_constructor(e, t, i),
this.resultFormatter = this._formatResult,
this._tagSrcAttribute = "src",
this.on("initialize", this._updateXHR, this)
}
var t = createjs.extend(e, createjs.AbstractLoader);
t.load = function() {
this._tag || (this._tag = this._createTag(this._item.src)),
this._tag.preload = "auto",
this._tag.load(),
this.AbstractLoader_load()
}
,
t._createTag = function() {}
,
t._createRequest = function() {
this._preferXHR ? this._request = new createjs.XHRRequest(this._item) : this._request = new createjs.MediaTagRequest(this._item,this._tag || this._createTag(),this._tagSrcAttribute)
}
,
t._updateXHR = function(e) {
e.loader.setResponseType && e.loader.setResponseType("blob")
}
,
t._formatResult = function(e) {
if (this._tag.removeEventListener && this._tag.removeEventListener("canplaythrough", this._loadedHandler),
this._tag.onstalled = null,
this._preferXHR) {
var t = window.URL || window.webkitURL
, i = e.getResult(!0);
e.getTag().src = t.createObjectURL(i)
}
return e.getTag()
}
,
createjs.AbstractMediaLoader = createjs.promote(e, "AbstractLoader")
}(),
this.createjs = this.createjs || {},
function() {
"use strict";
var e = function(e) {
this._item = e
}
, t = createjs.extend(e, createjs.EventDispatcher);
t.load = function() {}
,
t.destroy = function() {}
,
t.cancel = function() {}
,
createjs.AbstractRequest = createjs.promote(e, "EventDispatcher")
}(),
this.createjs = this.createjs || {},
function() {
"use strict";
function e(e, t, i) {
this.AbstractRequest_constructor(e),
this._tag = t,
this._tagSrcAttribute = i,
this._loadedHandler = createjs.proxy(this._handleTagComplete, this),
this._addedToDOM = !1
}
var t = createjs.extend(e, createjs.AbstractRequest);
t.load = function() {
this._tag.onload = createjs.proxy(this._handleTagComplete, this),
this._tag.onreadystatechange = createjs.proxy(this._handleReadyStateChange, this),
this._tag.onerror = createjs.proxy(this._handleError, this);
var e = new createjs.Event("initialize");
e.loader = this._tag,
this.dispatchEvent(e),
this._loadTimeout = setTimeout(createjs.proxy(this._handleTimeout, this), this._item.loadTimeout),
this._tag[this._tagSrcAttribute] = this._item.src,
null == this._tag.parentNode && (createjs.DomUtils.appendToBody(this._tag),
this._addedToDOM = !0)
}
,
t.destroy = function() {
this._clean(),
this._tag = null,
this.AbstractRequest_destroy()
}
,
t._handleReadyStateChange = function() {
clearTimeout(this._loadTimeout);
var e = this._tag;
"loaded" != e.readyState && "complete" != e.readyState || this._handleTagComplete()
}
,
t._handleError = function() {
this._clean(),
this.dispatchEvent("error")
}
,
t._handleTagComplete = function() {
this._rawResult = this._tag,
this._result = this.resultFormatter && this.resultFormatter(this) || this._rawResult,
this._clean(),
this.dispatchEvent("complete")
}
,
t._handleTimeout = function() {
this._clean(),
this.dispatchEvent(new createjs.Event("timeout"))
}
,
t._clean = function() {
this._tag.onload = null,
this._tag.onreadystatechange = null,
this._tag.onerror = null,
this._addedToDOM && null != this._tag.parentNode && this._tag.parentNode.removeChild(this._tag),
clearTimeout(this._loadTimeout)
}
,
t._handleStalled = function() {}
,
createjs.TagRequest = createjs.promote(e, "AbstractRequest")
}(),
this.createjs = this.createjs || {},
function() {
"use strict";
function e(e, t, i) {
this.AbstractRequest_constructor(e),
this._tag = t,
this._tagSrcAttribute = i,
this._loadedHandler = createjs.proxy(this._handleTagComplete, this)
}
var t = createjs.extend(e, createjs.TagRequest);
t.load = function() {
var e = createjs.proxy(this._handleStalled, this);
this._stalledCallback = e;
var t = createjs.proxy(this._handleProgress, this);
this._handleProgress = t,
this._tag.addEventListener("stalled", e),
this._tag.addEventListener("progress", t),
this._tag.addEventListener && this._tag.addEventListener("canplaythrough", this._loadedHandler, !1),
this.TagRequest_load()
}
,
t._handleReadyStateChange = function() {
clearTimeout(this._loadTimeout);
var e = this._tag;
"loaded" != e.readyState && "complete" != e.readyState || this._handleTagComplete()
}
,
t._handleStalled = function() {}
,
t._handleProgress = function(e) {
if (e && !(e.loaded > 0 && 0 == e.total)) {
var t = new createjs.ProgressEvent(e.loaded,e.total);
this.dispatchEvent(t)
}
}
,
t._clean = function() {
this._tag.removeEventListener && this._tag.removeEventListener("canplaythrough", this._loadedHandler),
this._tag.removeEventListener("stalled", this._stalledCallback),
this._tag.removeEventListener("progress", this._progressCallback),
this.TagRequest__clean()
}
,
createjs.MediaTagRequest = createjs.promote(e, "TagRequest")
}(),
this.createjs = this.createjs || {},
function() {
"use strict";
function e(e) {
this.AbstractRequest_constructor(e),
this._request = null,
this._loadTimeout = null,
this._xhrLevel = 1,
this._response = null,
this._rawResponse = null,
this._canceled = !1,
this._handleLoadStartProxy = createjs.proxy(this._handleLoadStart, this),
this._handleProgressProxy = createjs.proxy(this._handleProgress, this),
this._handleAbortProxy = createjs.proxy(this._handleAbort, this),
this._handleErrorProxy = createjs.proxy(this._handleError, this),
this._handleTimeoutProxy = createjs.proxy(this._handleTimeout, this),
this._handleLoadProxy = createjs.proxy(this._handleLoad, this),
this._handleReadyStateChangeProxy = createjs.proxy(this._handleReadyStateChange, this),
this._createXHR(e)
}
var t = createjs.extend(e, createjs.AbstractRequest);
e.ACTIVEX_VERSIONS = ["Msxml2.XMLHTTP.6.0", "Msxml2.XMLHTTP.5.0", "Msxml2.XMLHTTP.4.0", "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"],
t.getResult = function(e) {
return e && this._rawResponse ? this._rawResponse : this._response
}
,
t.cancel = function() {
this.canceled = !0,
this._clean(),
this._request.abort()
}
,
t.load = function() {
if (null == this._request)
return void this._handleError();
null != this._request.addEventListener ? (this._request.addEventListener("loadstart", this._handleLoadStartProxy, !1),
this._request.addEventListener("progress", this._handleProgressProxy, !1),
this._request.addEventListener("abort", this._handleAbortProxy, !1),
this._request.addEventListener("error", this._handleErrorProxy, !1),
this._request.addEventListener("timeout", this._handleTimeoutProxy, !1),
this._request.addEventListener("load", this._handleLoadProxy, !1),
this._request.addEventListener("readystatechange", this._handleReadyStateChangeProxy, !1)) : (this._request.onloadstart = this._handleLoadStartProxy,
this._request.onprogress = this._handleProgressProxy,
this._request.onabort = this._handleAbortProxy,
this._request.onerror = this._handleErrorProxy,
this._request.ontimeout = this._handleTimeoutProxy,
this._request.onload = this._handleLoadProxy,
this._request.onreadystatechange = this._handleReadyStateChangeProxy),
1 == this._xhrLevel && (this._loadTimeout = setTimeout(createjs.proxy(this._handleTimeout, this), this._item.loadTimeout));
try {
this._item.values ? this._request.send(createjs.URLUtils.formatQueryString(this._item.values)) : this._request.send()
} catch (e) {
this.dispatchEvent(new createjs.ErrorEvent("XHR_SEND",null,e))
}
}
,
t.setResponseType = function(e) {
"blob" === e && (e = window.URL ? "blob" : "arraybuffer",
this._responseType = e),
this._request.responseType = e
}
,
t.getAllResponseHeaders = function() {
return this._request.getAllResponseHeaders instanceof Function ? this._request.getAllResponseHeaders() : null
}
,
t.getResponseHeader = function(e) {
return this._request.getResponseHeader instanceof Function ? this._request.getResponseHeader(e) : null
}
,
t._handleProgress = function(e) {
if (e && !(e.loaded > 0 && 0 == e.total)) {
var t = new createjs.ProgressEvent(e.loaded,e.total);
this.dispatchEvent(t)
}
}
,
t._handleLoadStart = function(e) {
clearTimeout(this._loadTimeout),
this.dispatchEvent("loadstart")
}
,
t._handleAbort = function(e) {
this._clean(),
this.dispatchEvent(new createjs.ErrorEvent("XHR_ABORTED",null,e))
}
,
t._handleError = function(e) {
this._clean(),
this.dispatchEvent(new createjs.ErrorEvent(e.message))
}
,
t._handleReadyStateChange = function(e) {
4 == this._request.readyState && this._handleLoad()
}
,
t._handleLoad = function(e) {
if (!this.loaded) {
this.loaded = !0;
var t = this._checkError();
if (t)
return void this._handleError(t);
if (this._response = this._getResponse(),
"arraybuffer" === this._responseType)
try {
this._response = new Blob([this._response])
} catch (e) {
if (window.BlobBuilder = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder || window.MSBlobBuilder,
"TypeError" === e.name && window.BlobBuilder) {
var i = new BlobBuilder;
i.append(this._response),
this._response = i.getBlob()
}
}
this._clean(),
this.dispatchEvent(new createjs.Event("complete"))
}
}
,
t._handleTimeout = function(e) {
this._clean(),
this.dispatchEvent(new createjs.ErrorEvent("PRELOAD_TIMEOUT",null,e))
}
,
t._checkError = function() {
var e = parseInt(this._request.status);
return e >= 400 && e <= 599 ? new Error(e) : 0 == e && /^https?:/.test(location.protocol) ? new Error(0) : null
}
,
t._getResponse = function() {
if (null != this._response)
return this._response;
if (null != this._request.response)
return this._request.response;
try {
if (null != this._request.responseText)
return this._request.responseText
} catch (e) {}
try {
if (null != this._request.responseXML)
return this._request.responseXML
} catch (e) {}
return null
}
,
t._createXHR = function(e) {
var t = createjs.URLUtils.isCrossDomain(e)
, i = {}
, a = null;
if (window.XMLHttpRequest)
a = new XMLHttpRequest,
t && void 0 === a.withCredentials && window.XDomainRequest && (a = new XDomainRequest);
else {
for (var n = 0, r = s.ACTIVEX_VERSIONS.length; n < r; n++) {
var o = s.ACTIVEX_VERSIONS[n];
try {
a = new ActiveXObject(o);
break
} catch (e) {}
}
if (null == a)
return !1
}
null == e.mimeType && createjs.RequestUtils.isText(e.type) && (e.mimeType = "text/plain; charset=utf-8"),
e.mimeType && a.overrideMimeType && a.overrideMimeType(e.mimeType),
this._xhrLevel = "string" == typeof a.responseType ? 2 : 1;
var l = null;
if (l = e.method == createjs.Methods.GET ? createjs.URLUtils.buildURI(e.src, e.values) : e.src,
a.open(e.method || createjs.Methods.GET, l, !0),
t && a instanceof XMLHttpRequest && 1 == this._xhrLevel && (i.Origin = location.origin),
e.values && e.method == createjs.Methods.POST && (i["Content-Type"] = "application/x-www-form-urlencoded"),
t || i["X-Requested-With"] || (i["X-Requested-With"] = "XMLHttpRequest"),
e.headers)
for (var u in e.headers)
i[u] = e.headers[u];
for (u in i)
a.setRequestHeader(u, i[u]);
return a instanceof XMLHttpRequest && void 0 !== e.withCredentials && (a.withCredentials = e.withCredentials),
this._request = a,
!0
}
,
t._clean = function() {
clearTimeout(this._loadTimeout),
null != this._request.removeEventListener ? (this._request.removeEventListener("loadstart", this._handleLoadStartProxy),
this._request.removeEventListener("progress", this._handleProgressProxy),
this._request.removeEventListener("abort", this._handleAbortProxy),
this._request.removeEventListener("error", this._handleErrorProxy),
this._request.removeEventListener("timeout", this._handleTimeoutProxy),
this._request.removeEventListener("load", this._handleLoadProxy),
this._request.removeEventListener("readystatechange", this._handleReadyStateChangeProxy)) : (this._request.onloadstart = null,
this._request.onprogress = null,
this._request.onabort = null,
this._request.onerror = null,
this._request.ontimeout = null,
this._request.onload = null,
this._request.onreadystatechange = null)
}
,
t.toString = function() {
return "[PreloadJS XHRRequest]"
}
,
createjs.XHRRequest = createjs.promote(e, "AbstractRequest")
}(),
this.createjs = this.createjs || {},
function() {
"use strict";
function e(e, t) {
this.AbstractMediaLoader_constructor(e, t, createjs.Types.SOUND),
createjs.DomUtils.isAudioTag(e) ? this._tag = e : createjs.DomUtils.isAudioTag(e.src) ? this._tag = e : createjs.DomUtils.isAudioTag(e.tag) && (this._tag = createjs.DomUtils.isAudioTag(e) ? e : e.src),
null != this._tag && (this._preferXHR = !1)
}
var t = createjs.extend(e, createjs.AbstractMediaLoader);
e.canLoadItem = function(e) {
return e.type == createjs.Types.SOUND
}
,
t._createTag = function(e) {
var t = createjs.Elements.audio();
return t.autoplay = !1,
t.preload = "none",
t.src = e,
t
}
,
createjs.SoundLoader = createjs.promote(e, "AbstractMediaLoader")
}(),
this.createjs = this.createjs || {},
function() {
"use strict";
var e = function() {
this.interrupt = null,
this.delay = null,
this.offset = null,
this.loop = null,
this.volume = null,
this.pan = null,
this.startTime = null,
this.duration = null
}
, t = e.prototype = {}
, i = e;
i.create = function(e) {
if ("string" == typeof e)
return console && (console.warn || console.log)("Deprecated behaviour. Sound.play takes a configuration object instead of individual arguments. See docs for info."),
(new createjs.PlayPropsConfig).set({
interrupt: e
});
if (null == e || e instanceof i || e instanceof Object)
return (new createjs.PlayPropsConfig).set(e);
if (null == e)
throw new Error("PlayProps configuration not recognized.")
}
,
t.set = function(e) {
if (null != e)
for (var t in e)
this[t] = e[t];
return this
}
,
t.toString = function() {
return "[PlayPropsConfig]"
}
,
createjs.PlayPropsConfig = i
}(),
this.createjs = this.createjs || {},
function() {
"use strict";
function e() {
throw "Sound cannot be instantiated"
}
function t(e, t) {
this.init(e, t)
}
var i = e;
i.INTERRUPT_ANY = "any",
i.INTERRUPT_EARLY = "early",
i.INTERRUPT_LATE = "late",
i.INTERRUPT_NONE = "none",
i.PLAY_INITED = "playInited",
i.PLAY_SUCCEEDED = "playSucceeded",
i.PLAY_INTERRUPTED = "playInterrupted",
i.PLAY_FINISHED = "playFinished",
i.PLAY_FAILED = "playFailed",
i.SUPPORTED_EXTENSIONS = ["mp3", "ogg", "opus", "mpeg", "wav", "m4a", "mp4", "aiff", "wma", "mid", "webm"],
i.EXTENSION_MAP = {
m4a: "mp4"
},
i.FILE_PATTERN = /^(?:(\w+:)\/{2}(\w+(?:\.\w+)*\/?))?([\/.]*?(?:[^?]+)?\/)?((?:[^\/?]+)\.(\w+))(?:\?(\S+)?)?$/,
i.defaultInterruptBehavior = i.INTERRUPT_NONE,
i.alternateExtensions = [],
i.activePlugin = null,
i._masterVolume = 1,
i._getMasterVolume = function() {
return this._masterVolume
}
,
i.getVolume = createjs.deprecate(i._getMasterVolume, "Sound.getVolume"),
i._setMasterVolume = function(e) {
if (null != Number(e) && (e = Math.max(0, Math.min(1, e)),
i._masterVolume = e,
!this.activePlugin || !this.activePlugin.setVolume || !this.activePlugin.setVolume(e)))
for (var t = this._instances, a = 0, n = t.length; a < n; a++)
t[a].setMasterVolume(e)
}
,
i.setVolume = createjs.deprecate(i._setMasterVolume, "Sound.setVolume"),
i._masterMute = !1,
i._getMute = function() {
return this._masterMute
}
,
i.getMute = createjs.deprecate(i._getMute, "Sound.getMute"),
i._setMute = function(e) {
if (null != e && (this._masterMute = e,
!this.activePlugin || !this.activePlugin.setMute || !this.activePlugin.setMute(e)))
for (var t = this._instances, i = 0, a = t.length; i < a; i++)
t[i].setMasterMute(e)
}
,
i.setMute = createjs.deprecate(i._setMute, "Sound.setMute"),
i._getCapabilities = function() {
return null == i.activePlugin ? null : i.activePlugin._capabilities
}
,
i.getCapabilities = createjs.deprecate(i._getCapabilities, "Sound.getCapabilities"),
Object.defineProperties(i, {
volume: {
get: i._getMasterVolume,
set: i._setMasterVolume
},
muted: {
get: i._getMute,
set: i._setMute
},
capabilities: {
get: i._getCapabilities
}
}),
i._pluginsRegistered = !1,
i._lastID = 0,
i._instances = [],
i._idHash = {},
i._preloadHash = {},
i._defaultPlayPropsHash = {},
i.addEventListener = null,
i.removeEventListener = null,
i.removeAllEventListeners = null,
i.dispatchEvent = null,
i.hasEventListener = null,
i._listeners = null,
createjs.EventDispatcher.initialize(i),
i.getPreloadHandlers = function() {
return {
callback: createjs.proxy(i.initLoad, i),
types: ["sound"],
extensions: i.SUPPORTED_EXTENSIONS
}
}
,
i._handleLoadComplete = function(e) {
var t = e.target.getItem().src;
if (i._preloadHash[t])
for (var a = 0, n = i._preloadHash[t].length; a < n; a++) {
var r = i._preloadHash[t][a];
if (i._preloadHash[t][a] = !0,
i.hasEventListener("fileload")) {
var e = new createjs.Event("fileload");
e.src = r.src,
e.id = r.id,
e.data = r.data,
e.sprite = r.sprite,
i.dispatchEvent(e)
}
}
}
,
i._handleLoadError = function(e) {
var t = e.target.getItem().src;
if (i._preloadHash[t])
for (var a = 0, n = i._preloadHash[t].length; a < n; a++) {
var r = i._preloadHash[t][a];
if (i._preloadHash[t][a] = !1,
i.hasEventListener("fileerror")) {
var e = new createjs.Event("fileerror");
e.src = r.src,
e.id = r.id,
e.data = r.data,
e.sprite = r.sprite,
i.dispatchEvent(e)
}
}
}
,
i._registerPlugin = function(e) {
return !!e.isSupported() && (i.activePlugin = new e,
!0)
}
,
i.registerPlugins = function(e) {
i._pluginsRegistered = !0;
for (var t = 0, a = e.length; t < a; t++)
if (i._registerPlugin(e[t]))
return !0;
return !1
}
,
i.initializeDefaultPlugins = function() {
return null != i.activePlugin || !i._pluginsRegistered && !!i.registerPlugins([createjs.WebAudioPlugin, createjs.HTMLAudioPlugin])
}
,
i.isReady = function() {
return null != i.activePlugin
}
,
i.initLoad = function(e) {
return "video" == e.type || i._registerSound(e)
}
,
i._registerSound = function(e) {
if (!i.initializeDefaultPlugins())
return !1;
var a;
if (e.src instanceof Object ? (a = i._parseSrc(e.src),
a.src = e.path + a.src) : a = i._parsePath(e.src),
null == a)
return !1;
e.src = a.src,
e.type = "sound";
var n = e.data
, r = null;
if (null != n && (isNaN(n.channels) ? isNaN(n) || (r = parseInt(n)) : r = parseInt(n.channels),
n.audioSprite))
for (var o, s = n.audioSprite.length; s--; )
o = n.audioSprite[s],
i._idHash[o.id] = {
src: e.src,
startTime: parseInt(o.startTime),
duration: parseInt(o.duration)
},
o.defaultPlayProps && (i._defaultPlayPropsHash[o.id] = createjs.PlayPropsConfig.create(o.defaultPlayProps));
null != e.id && (i._idHash[e.id] = {
src: e.src
});
var l = i.activePlugin.register(e);
return t.create(e.src, r),
null != n && isNaN(n) ? e.data.channels = r || t.maxPerChannel() : e.data = r || t.maxPerChannel(),
l.type && (e.type = l.type),
e.defaultPlayProps && (i._defaultPlayPropsHash[e.src] = createjs.PlayPropsConfig.create(e.defaultPlayProps)),
l
}
,
i.registerSound = function(e, t, a, n, r) {
var o = {
src: e,
id: t,
data: a,
defaultPlayProps: r
};
e instanceof Object && e.src && (n = t,
o = e),
o = createjs.LoadItem.create(o),
o.path = n,
null == n || o.src instanceof Object || (o.src = n + o.src);
var s = i._registerSound(o);
if (!s)
return !1;
if (i._preloadHash[o.src] || (i._preloadHash[o.src] = []),
i._preloadHash[o.src].push(o),
1 == i._preloadHash[o.src].length)
s.on("complete", this._handleLoadComplete, this),
s.on("error", this._handleLoadError, this),
i.activePlugin.preload(s);
else if (1 == i._preloadHash[o.src][0])
return !0;
return o
}
,
i.registerSounds = function(e, t) {
var i = [];
e.path && (t ? t += e.path : t = e.path,
e = e.manifest);
for (var a = 0, n = e.length; a < n; a++)
i[a] = createjs.Sound.registerSound(e[a].src, e[a].id, e[a].data, t, e[a].defaultPlayProps);
return i
}
,
i.removeSound = function(e, a) {
if (null == i.activePlugin)
return !1;
e instanceof Object && e.src && (e = e.src);
var n;
if (e instanceof Object ? n = i._parseSrc(e) : (e = i._getSrcById(e).src,
n = i._parsePath(e)),
null == n)
return !1;
e = n.src,
null != a && (e = a + e);
for (var r in i._idHash)
i._idHash[r].src == e && delete i._idHash[r];
return t.removeSrc(e),
delete i._preloadHash[e],
i.activePlugin.removeSound(e),
!0
}
,
i.removeSounds = function(e, t) {
var i = [];
e.path && (t ? t += e.path : t = e.path,
e = e.manifest);
for (var a = 0, n = e.length; a < n; a++)
i[a] = createjs.Sound.removeSound(e[a].src, t);
return i
}
,
i.removeAllSounds = function() {
i._idHash = {},
i._preloadHash = {},
t.removeAll(),
i.activePlugin && i.activePlugin.removeAllSounds()
}
,
i.loadComplete = function(e) {
if (!i.isReady())
return !1;
var t = i._parsePath(e);
return e = t ? i._getSrcById(t.src).src : i._getSrcById(e).src,
void 0 != i._preloadHash[e] && 1 == i._preloadHash[e][0]
}
,
i._parsePath = function(e) {
"string" != typeof e && (e = e.toString());
var t = e.match(i.FILE_PATTERN);
if (null == t)
return !1;
for (var a = t[4], n = t[5], r = i.capabilities, o = 0; !r[n]; )
if (n = i.alternateExtensions[o++],
o > i.alternateExtensions.length)
return null;
return e = e.replace("." + t[5], "." + n),
{
name: a,
src: e,
extension: n
}
}
,
i._parseSrc = function(e) {
var t = {
name: void 0,
src: void 0,
extension: void 0
}
, a = i.capabilities;
for (var n in e)
if (e.hasOwnProperty(n) && a[n]) {
t.src = e[n],
t.extension = n;
break
}
if (!t.src)
return !1;
var r = t.src.lastIndexOf("/");
return t.name = -1 != r ? t.src.slice(r + 1) : t.src,
t
}
,
i.play = function(e, t) {
var a = createjs.PlayPropsConfig.create(t)
, n = i.createInstance(e, a.startTime, a.duration);
return i._playInstance(n, a) || n._playFailed(),
n
}
,
i.createInstance = function(e, a, n) {
if (!i.initializeDefaultPlugins())
return new createjs.DefaultSoundInstance(e,a,n);
var r = i._defaultPlayPropsHash[e];
e = i._getSrcById(e);
var o = i._parsePath(e.src)
, s = null;
return null != o && null != o.src ? (t.create(o.src),
null == a && (a = e.startTime),
s = i.activePlugin.create(o.src, a, n || e.duration),
(r = r || i._defaultPlayPropsHash[o.src]) && s.applyPlayProps(r)) : s = new createjs.DefaultSoundInstance(e,a,n),
s.uniqueId = i._lastID++,
s
}
,
i.stop = function() {
for (var e = this._instances, t = e.length; t--; )
e[t].stop()
}
,
i.setDefaultPlayProps = function(e, t) {
e = i._getSrcById(e),
i._defaultPlayPropsHash[i._parsePath(e.src).src] = createjs.PlayPropsConfig.create(t)
}
,
i.getDefaultPlayProps = function(e) {
return e = i._getSrcById(e),
i._defaultPlayPropsHash[i._parsePath(e.src).src]
}
,
i._playInstance = function(e, t) {
var a = i._defaultPlayPropsHash[e.src] || {};
if (null == t.interrupt && (t.interrupt = a.interrupt || i.defaultInterruptBehavior),
null == t.delay && (t.delay = a.delay || 0),
null == t.offset && (t.offset = e.position),
null == t.loop && (t.loop = e.loop),
null == t.volume && (t.volume = e.volume),
null == t.pan && (t.pan = e.pan),
0 == t.delay) {
if (!i._beginPlaying(e, t))
return !1
} else {
var n = setTimeout(function() {
i._beginPlaying(e, t)
}, t.delay);
e.delayTimeoutId = n
}
return this._instances.push(e),
!0
}
,
i._beginPlaying = function(e, i) {
if (!t.add(e, i.interrupt))
return !1;
if (!e._beginPlaying(i)) {
var a = createjs.indexOf(this._instances, e);
return a > -1 && this._instances.splice(a, 1),
!1
}
return !0
}
,
i._getSrcById = function(e) {
return i._idHash[e] || {
src: e
}
}
,
i._playFinished = function(e) {
t.remove(e);
var i = createjs.indexOf(this._instances, e);
i > -1 && this._instances.splice(i, 1)
}
,
createjs.Sound = e,
t.channels = {},
t.create = function(e, i) {
return null == t.get(e) && (t.channels[e] = new t(e,i),
!0)
}
,
t.removeSrc = function(e) {
var i = t.get(e);
return null != i && (i._removeAll(),
delete t.channels[e],
!0)
}
,
t.removeAll = function() {
for (var e in t.channels)
t.channels[e]._removeAll();
t.channels = {}
}
,
t.add = function(e, i) {
var a = t.get(e.src);
return null != a && a._add(e, i)
}
,
t.remove = function(e) {
var i = t.get(e.src);
return null != i && (i._remove(e),
!0)
}
,
t.maxPerChannel = function() {
return a.maxDefault
}
,
t.get = function(e) {
return t.channels[e]
}
;
var a = t.prototype;
a.constructor = t,
a.src = null,
a.max = null,
a.maxDefault = 100,
a.length = 0,
a.init = function(e, t) {
this.src = e,
this.max = t || this.maxDefault,
-1 == this.max && (this.max = this.maxDefault),
this._instances = []
}
,
a._get = function(e) {
return this._instances[e]
}
,
a._add = function(e, t) {
return !!this._getSlot(t, e) && (this._instances.push(e),
this.length++,
!0)
}
,
a._remove = function(e) {
var t = createjs.indexOf(this._instances, e);
return -1 != t && (this._instances.splice(t, 1),
this.length--,
!0)
}
,
a._removeAll = function() {
for (var e = this.length - 1; e >= 0; e--)
this._instances[e].stop()
}
,
a._getSlot = function(t, i) {
var a, n;
if (t != e.INTERRUPT_NONE && null == (n = this._get(0)))
return !0;
for (var r = 0, o = this.max; r < o; r++) {
if (null == (a = this._get(r)))
return !0;
if (a.playState == e.PLAY_FINISHED || a.playState == e.PLAY_INTERRUPTED || a.playState == e.PLAY_FAILED) {
n = a;
break
}
t != e.INTERRUPT_NONE && ((t == e.INTERRUPT_EARLY && a.position < n.position || t == e.INTERRUPT_LATE && a.position > n.position) && (n = a))
}
return null != n && (n._interrupt(),
this._remove(n),
!0)
}
,
a.toString = function() {
return "[Sound SoundChannel]"
}
}(),
this.createjs = this.createjs || {},
function() {
"use strict";
var e = function(e, t, i, a) {
this.EventDispatcher_constructor(),
this.src = e,
this.uniqueId = -1,
this.playState = null,
this.delayTimeoutId = null,
this._volume = 1,
Object.defineProperty(this, "volume", {
get: this._getVolume,
set: this._setVolume
}),
this.getVolume = createjs.deprecate(this._getVolume, "AbstractSoundInstance.getVolume"),
this.setVolume = createjs.deprecate(this._setVolume, "AbstractSoundInstance.setVolume"),
this._pan = 0,
Object.defineProperty(this, "pan", {
get: this._getPan,
set: this._setPan
}),
this.getPan = createjs.deprecate(this._getPan, "AbstractSoundInstance.getPan"),
this.setPan = createjs.deprecate(this._setPan, "AbstractSoundInstance.setPan"),
this._startTime = Math.max(0, t || 0),
Object.defineProperty(this, "startTime", {
get: this._getStartTime,
set: this._setStartTime
}),
this.getStartTime = createjs.deprecate(this._getStartTime, "AbstractSoundInstance.getStartTime"),
this.setStartTime = createjs.deprecate(this._setStartTime, "AbstractSoundInstance.setStartTime"),
this._duration = Math.max(0, i || 0),
Object.defineProperty(this, "duration", {
get: this._getDuration,
set: this._setDuration
}),
this.getDuration = createjs.deprecate(this._getDuration, "AbstractSoundInstance.getDuration"),
this.setDuration = createjs.deprecate(this._setDuration, "AbstractSoundInstance.setDuration"),
this._playbackResource = null,
Object.defineProperty(this, "playbackResource", {
get: this._getPlaybackResource,
set: this._setPlaybackResource
}),
!1 !== a && !0 !== a && this._setPlaybackResource(a),
this.getPlaybackResource = createjs.deprecate(this._getPlaybackResource, "AbstractSoundInstance.getPlaybackResource"),
this.setPlaybackResource = createjs.deprecate(this._setPlaybackResource, "AbstractSoundInstance.setPlaybackResource"),
this._position = 0,
Object.defineProperty(this, "position", {
get: this._getPosition,
set: this._setPosition
}),
this.getPosition = createjs.deprecate(this._getPosition, "AbstractSoundInstance.getPosition"),
this.setPosition = createjs.deprecate(this._setPosition, "AbstractSoundInstance.setPosition"),
this._loop = 0,
Object.defineProperty(this, "loop", {
get: this._getLoop,
set: this._setLoop
}),
this.getLoop = createjs.deprecate(this._getLoop, "AbstractSoundInstance.getLoop"),
this.setLoop = createjs.deprecate(this._setLoop, "AbstractSoundInstance.setLoop"),
this._muted = !1,
Object.defineProperty(this, "muted", {
get: this._getMuted,
set: this._setMuted
}),
this.getMuted = createjs.deprecate(this._getMuted, "AbstractSoundInstance.getMuted"),
this.setMuted = createjs.deprecate(this._setMuted, "AbstractSoundInstance.setMuted"),
this._paused = !1,
Object.defineProperty(this, "paused", {
get: this._getPaused,
set: this._setPaused
}),
this.getPaused = createjs.deprecate(this._getPaused, "AbstractSoundInstance.getPaused"),
this.setPaused = createjs.deprecate(this._setPaused, "AbstractSoundInstance.setPaused")
}
, t = createjs.extend(e, createjs.EventDispatcher);
t.play = function(e) {
var t = createjs.PlayPropsConfig.create(e);
return this.playState == createjs.Sound.PLAY_SUCCEEDED ? (this.applyPlayProps(t),
void (this._paused && this._setPaused(!1))) : (this._cleanUp(),
createjs.Sound._playInstance(this, t),
this)
}
,
t.stop = function() {
return this._position = 0,
this._paused = !1,
this._handleStop(),
this._cleanUp(),
this.playState = createjs.Sound.PLAY_FINISHED,
this
}
,
t.destroy = function() {
this._cleanUp(),
this.src = null,
this.playbackResource = null,
this.removeAllEventListeners()
}
,
t.applyPlayProps = function(e) {
return null != e.offset && this._setPosition(e.offset),
null != e.loop && this._setLoop(e.loop),
null != e.volume && this._setVolume(e.volume),
null != e.pan && this._setPan(e.pan),
null != e.startTime && (this._setStartTime(e.startTime),
this._setDuration(e.duration)),
this
}
,
t.toString = function() {
return "[AbstractSoundInstance]"
}
,
t._getPaused = function() {
return this._paused
}
,
t._setPaused = function(e) {
if (!(!0 !== e && !1 !== e || this._paused == e || 1 == e && this.playState != createjs.Sound.PLAY_SUCCEEDED))
return this._paused = e,
e ? this._pause() : this._resume(),
clearTimeout(this.delayTimeoutId),
this
}
,
t._setVolume = function(e) {
return e == this._volume ? this : (this._volume = Math.max(0, Math.min(1, e)),
this._muted || this._updateVolume(),
this)
}
,
t._getVolume = function() {
return this._volume
}
,
t._setMuted = function(e) {
if (!0 === e || !1 === e)
return this._muted = e,
this._updateVolume(),
this
}
,
t._getMuted = function() {
return this._muted
}
,
t._setPan = function(e) {
return e == this._pan ? this : (this._pan = Math.max(-1, Math.min(1, e)),
this._updatePan(),
this)
}
,
t._getPan = function() {
return this._pan
}
,
t._getPosition = function() {
return this._paused || this.playState != createjs.Sound.PLAY_SUCCEEDED || (this._position = this._calculateCurrentPosition()),
this._position
}
,
t._setPosition = function(e) {
return this._position = Math.max(0, e),
this.playState == createjs.Sound.PLAY_SUCCEEDED && this._updatePosition(),
this
}
,
t._getStartTime = function() {
return this._startTime
}
,
t._setStartTime = function(e) {
return e == this._startTime ? this : (this._startTime = Math.max(0, e || 0),
this._updateStartTime(),
this)
}
,
t._getDuration = function() {
return this._duration
}
,
t._setDuration = function(e) {
return e == this._duration ? this : (this._duration = Math.max(0, e || 0),
this._updateDuration(),
this)
}
,
t._setPlaybackResource = function(e) {
return this._playbackResource = e,
0 == this._duration && this._playbackResource && this._setDurationFromSource(),
this
}
,
t._getPlaybackResource = function() {
return this._playbackResource
}
,
t._getLoop = function() {
return this._loop
}
,
t._setLoop = function(e) {
null != this._playbackResource && (0 != this._loop && 0 == e ? this._removeLooping(e) : 0 == this._loop && 0 != e && this._addLooping(e)),
this._loop = e
}
,
t._sendEvent = function(e) {
var t = new createjs.Event(e);
this.dispatchEvent(t)
}
,
t._cleanUp = function() {
clearTimeout(this.delayTimeoutId),
this._handleCleanUp(),
this._paused = !1,
createjs.Sound._playFinished(this)
}
,
t._interrupt = function() {
this._cleanUp(),
this.playState = createjs.Sound.PLAY_INTERRUPTED,
this._sendEvent("interrupted")
}
,
t._beginPlaying = function(e) {
return this._setPosition(e.offset),
this._setLoop(e.loop),
this._setVolume(e.volume),
this._setPan(e.pan),
null != e.startTime && (this._setStartTime(e.startTime),
this._setDuration(e.duration)),
null != this._playbackResource && this._position < this._duration ? (this._paused = !1,
this._handleSoundReady(),
this.playState = createjs.Sound.PLAY_SUCCEEDED,
this._sendEvent("succeeded"),
!0) : (this._playFailed(),
!1)
}
,
t._playFailed = function() {
this._cleanUp(),
this.playState = createjs.Sound.PLAY_FAILED,
this._sendEvent("failed")
}
,
t._handleSoundComplete = function(e) {
if (this._position = 0,
0 != this._loop)
return this._loop--,
this._handleLoop(),
void this._sendEvent("loop");
this._cleanUp(),
this.playState = createjs.Sound.PLAY_FINISHED,
this._sendEvent("complete")
}
,
t._handleSoundReady = function() {}
,
t._updateVolume = function() {}
,
t._updatePan = function() {}
,
t._updateStartTime = function() {}
,
t._updateDuration = function() {}
,
t._setDurationFromSource = function() {}
,
t._calculateCurrentPosition = function() {}
,
t._updatePosition = function() {}
,
t._removeLooping = function(e) {}
,
t._addLooping = function(e) {}
,
t._pause = function() {}
,
t._resume = function() {}
,
t._handleStop = function() {}
,
t._handleCleanUp = function() {}
,
t._handleLoop = function() {}
,
createjs.AbstractSoundInstance = createjs.promote(e, "EventDispatcher"),
createjs.DefaultSoundInstance = createjs.AbstractSoundInstance
}(),
this.createjs = this.createjs || {},
function() {
"use strict";
var e = function() {
this._capabilities = null,
this._loaders = {},
this._audioSources = {},
this._soundInstances = {},
this._volume = 1,
this._loaderClass,
this._soundInstanceClass
}
, t = e.prototype;
e._capabilities = null,
e.isSupported = function() {
return !0
}
,
t.register = function(e) {
var t = this._loaders[e.src];
return t && !t.canceled ? this._loaders[e.src] : (this._audioSources[e.src] = !0,
this._soundInstances[e.src] = [],
t = new this._loaderClass(e),
t.on("complete", this._handlePreloadComplete, this),
this._loaders[e.src] = t,
t)
}
,
t.preload = function(e) {
e.on("error", this._handlePreloadError, this),
e.load()
}
,
t.isPreloadStarted = function(e) {
return null != this._audioSources[e]
}
,
t.isPreloadComplete = function(e) {
return !(null == this._audioSources[e] || 1 == this._audioSources[e])
}
,
t.removeSound = function(e) {
if (this._soundInstances[e]) {
for (var t = this._soundInstances[e].length; t--; ) {
this._soundInstances[e][t].destroy()
}
delete this._soundInstances[e],
delete this._audioSources[e],
this._loaders[e] && this._loaders[e].destroy(),
delete this._loaders[e]
}
}
,
t.removeAllSounds = function() {
for (var e in this._audioSources)
this.removeSound(e)
}
,
t.create = function(e, t, i) {
this.isPreloadStarted(e) || this.preload(this.register(e));
var a = new this._soundInstanceClass(e,t,i,this._audioSources[e]);
return this._soundInstances[e] && this._soundInstances[e].push(a),
a.setMasterVolume && a.setMasterVolume(createjs.Sound.volume),
a.setMasterMute && a.setMasterMute(createjs.Sound.muted),
a
}
,
t.setVolume = function(e) {
return this._volume = e,
this._updateVolume(),
!0
}
,
t.getVolume = function() {
return this._volume
}
,
t.setMute = function(e) {
return this._updateVolume(),
!0
}
,
t.toString = function() {
return "[AbstractPlugin]"
}
,
t._handlePreloadComplete = function(e) {
var t = e.target.getItem().src
, i = e.result
, a = this._soundInstances[t];
if (this._audioSources[t] = i,
null != a && a.length > 0)
for (var n = 0, r = a.length; n < r; n++)
a[n].playbackResource = i;
this._soundInstances[t] = null
}
,
t._handlePreloadError = function(e) {}
,
t._updateVolume = function() {}
,
createjs.AbstractPlugin = e
}(),
this.createjs = this.createjs || {},
function() {
"use strict";
function e(e) {
this.AbstractLoader_constructor(e, !0, createjs.Types.SOUND)
}
var t = createjs.extend(e, createjs.AbstractLoader);
e.context = null,
t.toString = function() {
return "[WebAudioLoader]"
}
,
t._createRequest = function() {
this._request = new createjs.XHRRequest(this._item,!1),
this._request.setResponseType("arraybuffer")
}
,
t._sendComplete = function(t) {
e.context.decodeAudioData(this._rawResult, createjs.proxy(this._handleAudioDecoded, this), createjs.proxy(this._sendError, this))
}
,
t._handleAudioDecoded = function(e) {
this._result = e,
this.AbstractLoader__sendComplete()
}
,
createjs.WebAudioLoader = createjs.promote(e, "AbstractLoader")
}(),
this.createjs = this.createjs || {},
function() {
"use strict";
function e(e, t, a, n) {
this.AbstractSoundInstance_constructor(e, t, a, n),
this.gainNode = i.context.createGain(),
this.panNode = i.context.createPanner(),
this.panNode.panningModel = i._panningModel,
this.panNode.connect(this.gainNode),
this._updatePan(),
this.sourceNode = null,
this._soundCompleteTimeout = null,
this._sourceNodeNext = null,
this._playbackStartTime = 0,
this._endedHandler = createjs.proxy(this._handleSoundComplete, this)
}
var t = createjs.extend(e, createjs.AbstractSoundInstance)
, i = e;
i.context = null,
i._scratchBuffer = null,
i.destinationNode = null,
i._panningModel = "equalpower",
t.destroy = function() {
this.AbstractSoundInstance_destroy(),
this.panNode.disconnect(0),
this.panNode = null,
this.gainNode.disconnect(0),
this.gainNode = null
}
,
t.toString = function() {
return "[WebAudioSoundInstance]"
}
,
t._updatePan = function() {
this.panNode.setPosition(this._pan, 0, -.5)
}
,
t._removeLooping = function(e) {
this._sourceNodeNext = this._cleanUpAudioNode(this._sourceNodeNext)
}
,
t._addLooping = function(e) {
this.playState == createjs.Sound.PLAY_SUCCEEDED && (this._sourceNodeNext = this._createAndPlayAudioNode(this._playbackStartTime, 0))
}
,
t._setDurationFromSource = function() {
this._duration = 1e3 * this.playbackResource.duration
}
,
t._handleCleanUp = function() {
this.sourceNode && this.playState == createjs.Sound.PLAY_SUCCEEDED && (this.sourceNode = this._cleanUpAudioNode(this.sourceNode),
this._sourceNodeNext = this._cleanUpAudioNode(this._sourceNodeNext)),
0 != this.gainNode.numberOfOutputs && this.gainNode.disconnect(0),
clearTimeout(this._soundCompleteTimeout),
this._playbackStartTime = 0
}
,
t._cleanUpAudioNode = function(e) {
if (e) {
if (e.stop(0),
e.disconnect(0),
createjs.BrowserDetect.isIOS)
try {
e.buffer = i._scratchBuffer
} catch (e) {}
e = null
}
return e
}
,
t._handleSoundReady = function(e) {
this.gainNode.connect(i.destinationNode);
var t = .001 * this._duration
, a = Math.min(.001 * Math.max(0, this._position), t);
this.sourceNode = this._createAndPlayAudioNode(i.context.currentTime - t, a),
this._playbackStartTime = this.sourceNode.startTime - a,
this._soundCompleteTimeout = setTimeout(this._endedHandler, 1e3 * (t - a)),
0 != this._loop && (this._sourceNodeNext = this._createAndPlayAudioNode(this._playbackStartTime, 0))
}
,
t._createAndPlayAudioNode = function(e, t) {
var a = i.context.createBufferSource();
a.buffer = this.playbackResource,
a.connect(this.panNode);
var n = .001 * this._duration;
return a.startTime = e + n,
a.start(a.startTime, t + .001 * this._startTime, n - t),
a
}
,
t._pause = function() {
this._position = 1e3 * (i.context.currentTime - this._playbackStartTime),
this.sourceNode = this._cleanUpAudioNode(this.sourceNode),
this._sourceNodeNext = this._cleanUpAudioNode(this._sourceNodeNext),
0 != this.gainNode.numberOfOutputs && this.gainNode.disconnect(0),
clearTimeout(this._soundCompleteTimeout)
}
,
t._resume = function() {
this._handleSoundReady()
}
,
t._updateVolume = function() {
var e = this._muted ? 0 : this._volume;
e != this.gainNode.gain.value && (this.gainNode.gain.value = e)
}
,
t._calculateCurrentPosition = function() {
return 1e3 * (i.context.currentTime - this._playbackStartTime)
}
,
t._updatePosition = function() {
this.sourceNode = this._cleanUpAudioNode(this.sourceNode),
this._sourceNodeNext = this._cleanUpAudioNode(this._sourceNodeNext),
clearTimeout(this._soundCompleteTimeout),
this._paused || this._handleSoundReady()
}
,
t._handleLoop = function() {
this._cleanUpAudioNode(this.sourceNode),
this.sourceNode = this._sourceNodeNext,
this._playbackStartTime = this.sourceNode.startTime,
this._sourceNodeNext = this._createAndPlayAudioNode(this._playbackStartTime, 0),
this._soundCompleteTimeout = setTimeout(this._endedHandler, this._duration)
}
,
t._updateDuration = function() {
this.playState == createjs.Sound.PLAY_SUCCEEDED && (this._pause(),
this._resume())
}
,
createjs.WebAudioSoundInstance = createjs.promote(e, "AbstractSoundInstance")
}(),
this.createjs = this.createjs || {},
function() {
"use strict";
function e() {
this.AbstractPlugin_constructor(),
this._panningModel = i._panningModel,
this.context = i.context,
this.dynamicsCompressorNode = this.context.createDynamicsCompressor(),
this.dynamicsCompressorNode.connect(this.context.destination),
this.gainNode = this.context.createGain(),
this.gainNode.connect(this.dynamicsCompressorNode),
createjs.WebAudioSoundInstance.destinationNode = this.gainNode,
this._capabilities = i._capabilities,
this._loaderClass = createjs.WebAudioLoader,
this._soundInstanceClass = createjs.WebAudioSoundInstance,
this._addPropsToClasses()
}
var t = createjs.extend(e, createjs.AbstractPlugin)
, i = e;
i._capabilities = null,
i._panningModel = "equalpower",
i.context = null,
i._scratchBuffer = null,
i._unlocked = !1,
i.DEFAULT_SAMPLE_RATE = 44100,
i.isSupported = function() {
var e = createjs.BrowserDetect.isIOS || createjs.BrowserDetect.isAndroid || createjs.BrowserDetect.isBlackberry;
return !("file:" == location.protocol && !e && !this._isFileXHRSupported()) && (i._generateCapabilities(),
null != i.context)
}
,
i.playEmptySound = function() {
if (null != i.context) {
var e = i.context.createBufferSource();
e.buffer = i._scratchBuffer,
e.connect(i.context.destination),
e.start(0, 0, 0)
}
}
,
i._isFileXHRSupported = function() {
var e = !0
, t = new XMLHttpRequest;
try {
t.open("GET", "WebAudioPluginTest.fail", !1)
} catch (t) {
return e = !1
}
t.onerror = function() {
e = !1
}
,
t.onload = function() {
e = 404 == this.status || 200 == this.status || 0 == this.status && "" != this.response
}
;
try {
t.send()
} catch (t) {
e = !1
}
return e
}
,
i._generateCapabilities = function() {
if (null == i._capabilities) {
var e = document.createElement("audio");
if (null == e.canPlayType)
return null;
if (null == i.context && (i.context = i._createAudioContext(),
null == i.context))
return null;
null == i._scratchBuffer && (i._scratchBuffer = i.context.createBuffer(1, 1, 22050)),
i._compatibilitySetUp(),
"ontouchstart"in window && "running" != i.context.state && (i._unlock(),
document.addEventListener("mousedown", i._unlock, !0),
document.addEventListener("touchstart", i._unlock, !0),
document.addEventListener("touchend", i._unlock, !0)),
i._capabilities = {
panning: !0,
volume: !0,
tracks: -1
};
for (var t = createjs.Sound.SUPPORTED_EXTENSIONS, a = createjs.Sound.EXTENSION_MAP, n = 0, r = t.length; n < r; n++) {
var o = t[n]
, s = a[o] || o;
i._capabilities[o] = "no" != e.canPlayType("audio/" + o) && "" != e.canPlayType("audio/" + o) || "no" != e.canPlayType("audio/" + s) && "" != e.canPlayType("audio/" + s)
}
i.context.destination.numberOfChannels < 2 && (i._capabilities.panning = !1)
}
}
,
i._createAudioContext = function() {
var e = window.AudioContext || window.webkitAudioContext;
if (null == e)
return null;
var t = new e;
if (/(iPhone|iPad)/i.test(navigator.userAgent) && t.sampleRate !== i.DEFAULT_SAMPLE_RATE) {
var a = t.createBuffer(1, 1, i.DEFAULT_SAMPLE_RATE)
, n = t.createBufferSource();
n.buffer = a,
n.connect(t.destination),
n.start(0),
n.disconnect(),
t.close(),
t = new e
}
return t
}
,
i._compatibilitySetUp = function() {
if (i._panningModel = "equalpower",
!i.context.createGain) {
i.context.createGain = i.context.createGainNode;
var e = i.context.createBufferSource();
e.__proto__.start = e.__proto__.noteGrainOn,
e.__proto__.stop = e.__proto__.noteOff,
i._panningModel = 0
}
}
,
i._unlock = function() {
i._unlocked || (i.playEmptySound(),
"running" == i.context.state && (document.removeEventListener("mousedown", i._unlock, !0),
document.removeEventListener("touchend", i._unlock, !0),
document.removeEventListener("touchstart", i._unlock, !0),
i._unlocked = !0))
}
,
t.toString = function() {
return "[WebAudioPlugin]"
}
,
t._addPropsToClasses = function() {
var e = this._soundInstanceClass;
e.context = this.context,
e._scratchBuffer = i._scratchBuffer,
e.destinationNode = this.gainNode,
e._panningModel = this._panningModel,
this._loaderClass.context = this.context
}
,
t._updateVolume = function() {
var e = createjs.Sound._masterMute ? 0 : this._volume;
e != this.gainNode.gain.value && (this.gainNode.gain.value = e)
}
,
createjs.WebAudioPlugin = createjs.promote(e, "AbstractPlugin")
}(),
this.createjs = this.createjs || {},
function() {
"use strict";
function e() {
throw "HTMLAudioTagPool cannot be instantiated"
}
function t(e) {
this._tags = []
}
var i = e;
i._tags = {},
i._tagPool = new t,
i._tagUsed = {},
i.get = function(e) {
var t = i._tags[e];
return null == t ? (t = i._tags[e] = i._tagPool.get(),
t.src = e) : i._tagUsed[e] ? (t = i._tagPool.get(),
t.src = e) : i._tagUsed[e] = !0,
t
}
,
i.set = function(e, t) {
t == i._tags[e] ? i._tagUsed[e] = !1 : i._tagPool.set(t)
}
,
i.remove = function(e) {
var t = i._tags[e];
return null != t && (i._tagPool.set(t),
delete i._tags[e],
delete i._tagUsed[e],
!0)
}
,
i.getDuration = function(e) {
var t = i._tags[e];
return null != t && t.duration ? 1e3 * t.duration : 0
}
,
createjs.HTMLAudioTagPool = e;
var a = t.prototype;
a.constructor = t,
a.get = function() {
var e;
return e = 0 == this._tags.length ? this._createTag() : this._tags.pop(),
null == e.parentNode && document.body.appendChild(e),
e
}
,
a.set = function(e) {
-1 == createjs.indexOf(this._tags, e) && (this._tags.src = null,
this._tags.push(e))
}
,
a.toString = function() {
return "[TagPool]"
}
,
a._createTag = function() {
var e = document.createElement("audio");
return e.autoplay = !1,
e.preload = "none",
e
}
}(),
this.createjs = this.createjs || {},
function() {
"use strict";
function e(e, t, i, a) {
this.AbstractSoundInstance_constructor(e, t, i, a),
this._audioSpriteStopTime = null,
this._delayTimeoutId = null,
this._endedHandler = createjs.proxy(this._handleSoundComplete, this),
this._readyHandler = createjs.proxy(this._handleTagReady, this),
this._stalledHandler = createjs.proxy(this._playFailed, this),
this._audioSpriteEndHandler = createjs.proxy(this._handleAudioSpriteLoop, this),
this._loopHandler = createjs.proxy(this._handleSoundComplete, this),
i ? this._audioSpriteStopTime = .001 * (t + i) : this._duration = createjs.HTMLAudioTagPool.getDuration(this.src)
}
var t = createjs.extend(e, createjs.AbstractSoundInstance);
t.setMasterVolume = function(e) {
this._updateVolume()
}
,
t.setMasterMute = function(e) {
this._updateVolume()
}
,
t.toString = function() {
return "[HTMLAudioSoundInstance]"
}
,
t._removeLooping = function() {
null != this._playbackResource && (this._playbackResource.loop = !1,
this._playbackResource.removeEventListener(createjs.HTMLAudioPlugin._AUDIO_SEEKED, this._loopHandler, !1))
}
,
t._addLooping = function() {
null == this._playbackResource || this._audioSpriteStopTime || (this._playbackResource.addEventListener(createjs.HTMLAudioPlugin._AUDIO_SEEKED, this._loopHandler, !1),
this._playbackResource.loop = !0)
}
,
t._handleCleanUp = function() {
var e = this._playbackResource;
if (null != e) {
e.pause(),
e.loop = !1,
e.removeEventListener(createjs.HTMLAudioPlugin._AUDIO_ENDED, this._endedHandler, !1),
e.removeEventListener(createjs.HTMLAudioPlugin._AUDIO_READY, this._readyHandler, !1),
e.removeEventListener(createjs.HTMLAudioPlugin._AUDIO_STALLED, this._stalledHandler, !1),
e.removeEventListener(createjs.HTMLAudioPlugin._AUDIO_SEEKED, this._loopHandler, !1),
e.removeEventListener(createjs.HTMLAudioPlugin._TIME_UPDATE, this._audioSpriteEndHandler, !1);
try {
e.currentTime = this._startTime
} catch (e) {}
createjs.HTMLAudioTagPool.set(this.src, e),
this._playbackResource = null
}
}
,
t._beginPlaying = function(e) {
return this._playbackResource = createjs.HTMLAudioTagPool.get(this.src),
this.AbstractSoundInstance__beginPlaying(e)
}
,
t._handleSoundReady = function(e) {
if (4 !== this._playbackResource.readyState) {
var t = this._playbackResource;
return t.addEventListener(createjs.HTMLAudioPlugin._AUDIO_READY, this._readyHandler, !1),
t.addEventListener(createjs.HTMLAudioPlugin._AUDIO_STALLED, this._stalledHandler, !1),
t.preload = "auto",
void t.load()
}
this._updateVolume(),
this._playbackResource.currentTime = .001 * (this._startTime + this._position),
this._audioSpriteStopTime ? this._playbackResource.addEventListener(createjs.HTMLAudioPlugin._TIME_UPDATE, this._audioSpriteEndHandler, !1) : (this._playbackResource.addEventListener(createjs.HTMLAudioPlugin._AUDIO_ENDED, this._endedHandler, !1),
0 != this._loop && (this._playbackResource.addEventListener(createjs.HTMLAudioPlugin._AUDIO_SEEKED, this._loopHandler, !1),
this._playbackResource.loop = !0)),
this._playbackResource.play()
}
,
t._handleTagReady = function(e) {
this._playbackResource.removeEventListener(createjs.HTMLAudioPlugin._AUDIO_READY, this._readyHandler, !1),
this._playbackResource.removeEventListener(createjs.HTMLAudioPlugin._AUDIO_STALLED, this._stalledHandler, !1),
this._handleSoundReady()
}
,
t._pause = function() {
this._playbackResource.pause()
}
,
t._resume = function() {
this._playbackResource.play()
}
,
t._updateVolume = function() {
if (null != this._playbackResource) {
var e = this._muted || createjs.Sound._masterMute ? 0 : this._volume * createjs.Sound._masterVolume;
e != this._playbackResource.volume && (this._playbackResource.volume = e)
}
}
,
t._calculateCurrentPosition = function() {
return 1e3 * this._playbackResource.currentTime - this._startTime
}
,
t._updatePosition = function() {
this._playbackResource.removeEventListener(createjs.HTMLAudioPlugin._AUDIO_SEEKED, this._loopHandler, !1),
this._playbackResource.addEventListener(createjs.HTMLAudioPlugin._AUDIO_SEEKED, this._handleSetPositionSeek, !1);
try {
this._playbackResource.currentTime = .001 * (this._position + this._startTime)
} catch (e) {
this._handleSetPositionSeek(null)
}
}
,
t._handleSetPositionSeek = function(e) {
null != this._playbackResource && (this._playbackResource.removeEventListener(createjs.HTMLAudioPlugin._AUDIO_SEEKED, this._handleSetPositionSeek, !1),
this._playbackResource.addEventListener(createjs.HTMLAudioPlugin._AUDIO_SEEKED, this._loopHandler, !1))
}
,
t._handleAudioSpriteLoop = function(e) {
this._playbackResource.currentTime <= this._audioSpriteStopTime || (this._playbackResource.pause(),
0 == this._loop ? this._handleSoundComplete(null) : (this._position = 0,
this._loop--,
this._playbackResource.currentTime = .001 * this._startTime,
this._paused || this._playbackResource.play(),
this._sendEvent("loop")))
}
,
t._handleLoop = function(e) {
0 == this._loop && (this._playbackResource.loop = !1,
this._playbackResource.removeEventListener(createjs.HTMLAudioPlugin._AUDIO_SEEKED, this._loopHandler, !1))
}
,
t._updateStartTime = function() {
this._audioSpriteStopTime = .001 * (this._startTime + this._duration),
this.playState == createjs.Sound.PLAY_SUCCEEDED && (this._playbackResource.removeEventListener(createjs.HTMLAudioPlugin._AUDIO_ENDED, this._endedHandler, !1),
this._playbackResource.addEventListener(createjs.HTMLAudioPlugin._TIME_UPDATE, this._audioSpriteEndHandler, !1))
}
,
t._updateDuration = function() {
this._audioSpriteStopTime = .001 * (this._startTime + this._duration),
this.playState == createjs.Sound.PLAY_SUCCEEDED && (this._playbackResource.removeEventListener(createjs.HTMLAudioPlugin._AUDIO_ENDED, this._endedHandler, !1),
this._playbackResource.addEventListener(createjs.HTMLAudioPlugin._TIME_UPDATE, this._audioSpriteEndHandler, !1))
}
,
t._setDurationFromSource = function() {
this._duration = createjs.HTMLAudioTagPool.getDuration(this.src),
this._playbackResource = null
}
,
createjs.HTMLAudioSoundInstance = createjs.promote(e, "AbstractSoundInstance")
}(),
this.createjs = this.createjs || {},
function() {
"use strict";
function e() {
this.AbstractPlugin_constructor(),
this._capabilities = i._capabilities,
this._loaderClass = createjs.SoundLoader,
this._soundInstanceClass = createjs.HTMLAudioSoundInstance
}
var t = createjs.extend(e, createjs.AbstractPlugin)
, i = e;
i.MAX_INSTANCES = 30,
i._AUDIO_READY = "canplaythrough",
i._AUDIO_ENDED = "ended",
i._AUDIO_SEEKED = "seeked",
i._AUDIO_STALLED = "stalled",
i._TIME_UPDATE = "timeupdate",
i._capabilities = null,
i.isSupported = function() {
return i._generateCapabilities(),
null != i._capabilities
}
,
i._generateCapabilities = function() {
if (null == i._capabilities) {
var e = document.createElement("audio");
if (null == e.canPlayType)
return null;
i._capabilities = {
panning: !1,
volume: !0,
tracks: -1
};
for (var t = createjs.Sound.SUPPORTED_EXTENSIONS, a = createjs.Sound.EXTENSION_MAP, n = 0, r = t.length; n < r; n++) {
var o = t[n]
, s = a[o] || o;
i._capabilities[o] = "no" != e.canPlayType("audio/" + o) && "" != e.canPlayType("audio/" + o) || "no" != e.canPlayType("audio/" + s) && "" != e.canPlayType("audio/" + s)
}
}
}
,
t.register = function(e) {
var t = createjs.HTMLAudioTagPool.get(e.src)
, i = this.AbstractPlugin_register(e);
return i.setTag(t),
i
}
,
t.removeSound = function(e) {
this.AbstractPlugin_removeSound(e),
createjs.HTMLAudioTagPool.remove(e)
}
,
t.create = function(e, t, i) {
var a = this.AbstractPlugin_create(e, t, i);
return a.playbackResource = null,
a
}
,
t.toString = function() {
return "[HTMLAudioPlugin]"
}
,
t.setVolume = t.getVolume = t.setMute = null,
createjs.HTMLAudioPlugin = createjs.promote(e, "AbstractPlugin")
}(),
e.exports = createjs
}
).call(window)
},
"0od3": function(e, t, i) {
"use strict";
var a = i("DlZn")
, n = i("/2+T")
, r = {
clamp: function(e, t, i) {
return e < i ? e > t ? e : t : i
},
min: function(e, t) {
return e < t ? e : t
},
max: function(e, t) {
return e > t ? e : t
},
lerp: function(e, t, i) {
return t * (1 - e) + i * e
},
delerp: function(e, t, i) {
return r.clamp((e - t) / (i - t), 0, 1)
},
v2lerp: function(e, t, i) {
return n.create(r.lerp(e, t.x, i.x), r.lerp(e, t.y, i.y))
},
smoothstep: function(e, t, i) {
var a = r.clamp((e - t) / (i - t), 0, 1);
return a * a * (3 - 2 * a)
},
easeOutElastic: function(e) {
var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : .3;
return Math.pow(2, -10 * e) * Math.sin((e - t / 4) * (2 * Math.PI) / t) + 1
},
remap: function(e, t, i, a, n) {
var o = r.clamp((e - t) / (i - t), 0, 1);
return r.lerp(o, a, n)
},
eqAbs: function(e, t, i) {
var a = i || 1e-6;
return Math.abs(e - t) < a
},
eqRel: function(e, t, i) {
var a = void 0 !== i ? i : 1e-6;
return Math.abs(e - t) <= a * Math.max(Math.max(1, Math.abs(e)), Math.abs(t))
},
deg2rad: function(e) {
return e * Math.PI / 180
},
rad2deg: function(e) {
return 180 * e / Math.PI
},
fract: function(e) {
return e - Math.floor(e)
},
sign: function(e) {
return e < 0 ? -1 : 1
},
mod: function(e, t) {
return (e % t + t) % t
},
fmod: function(e, t) {
return e - Math.floor(e / t) * t
},
angleDiff: function(e, t) {
var i = r.fmod(t - e + Math.PI, 2 * Math.PI) - Math.PI;
return i < -Math.PI ? i + 2 * Math.PI : i
},
quantize: function(e, t, i, n) {
a(e >= t && e <= i, "f out of range:", e, t, i);
var o = (1 << n) - 1
, s = r.clamp(e, t, i)
, l = (s - t) / (i - t);
return t + parseInt(l * o + .5) / o * (i - t)
},
v2Quantize: function(e, t, i, a, o, s) {
return n.create(r.quantize(e.x, t, a, s), r.quantize(e.y, i, o, s))
},
inside: function(e, t) {
for (var i = e.x, a = e.y, n = !1, r = 0, o = t.length - 1; r < t.length; o = r++) {
var s = t[r].x
, l = t[r].y
, u = t[o].x
, c = t[o].y;
l > a != c > a && i < (u - s) * (a - l) / (c - l) + s && (n = !n)
}
return n
},
rayLineIntersect: function(e, t, i, a) {
var r = n.sub(a, i)
, o = n.create(r.y, -r.x)
, s = n.dot(t, o);
if (!(Math.abs(s) <= 1e-6)) {
var l = n.sub(i, e)
, u = n.dot(o, l) / s
, c = n.dot(n.create(t.y, -t.x), l) / s;
return u >= 0 && c >= 0 && c <= 1 ? u : void 0
}
},
rayPolygonIntersect: function(e, t, i) {
for (var a = Number.MAX_VALUE, n = !1, r = 0, o = i.length - 1; r < i.length; o = r++) {
var s = this.rayLineIntersect(e, t, i[o], i[r]);
void 0 !== s && s < a && (n = !0,
a = s)
}
return n ? a : void 0
},
sqr: function(e) {
return e * e
},
dist2: function(e, t) {
return this.sqr(e.x - t.x) + this.sqr(e.y - t.y)
},
distToSegmentSquared: function(e, t, i) {
var a = this.dist2(t, i);
if (0 == a)
return this.dist2(e, t);
var n = ((e.x - t.x) * (i.x - t.x) + (e.y - t.y) * (i.y - t.y)) / a;
return n = Math.max(0, Math.min(1, n)),
this.dist2(e, {
x: t.x + n * (i.x - t.x),
y: t.y + n * (i.y - t.y)
})
},
distToSegment: function(e, t, i) {
return Math.sqrt(this.distToSegmentSquared(e, t, i))
},
distToPoly: function(e, t) {
for (var i = Number.MAX_VALUE, a = 0, n = t.length - 1; a < t.length; n = a++) {
var r = this.distToSegment(e, t[a], t[n]);
r < i && (i = r)
}
return i
},
isAngleBetween: function(e, t, i) {
return t <= i ? i - t <= 180 ? t <= e && e <= i : i <= e || e <= t : t - i <= 180 ? i <= e && e <= t : t <= e || e <= i
}
};
e.exports = r
},
"1JzZ": function(e, t, i) {
"use strict";
function a(e, t) {
if (!(e instanceof t))
throw new TypeError("Cannot call a class as a function")
}
function n(e, t, i) {
e.moveTo(t.x, t.y),
e.lineTo(i.x, i.y)
}
function r(e, t) {
var i = t[0];
e.moveTo(i.x, i.y);
for (var a = 1; a < t.length; ++a)
i = t[a],
e.lineTo(i.x, i.y);
e.closePath()
}
var o = function() {
function e(e, t) {
for (var i = 0; i < t.length; i++) {
var a = t[i];
a.enumerable = a.enumerable || !1,
a.configurable = !0,
"value"in a && (a.writable = !0),
Object.defineProperty(e, a.key, a)
}
}
return function(t, i, a) {
return i && e(t.prototype, i),
a && e(t, a),
t
}
}()
, s = i("gKxX")
, l = (i("8iex"),
i("9xSA"))
, u = i("Bk7F")
, c = i("YUyC")
, d = (i("Tf6H"),
i("/2+T"))
, h = i("dT1u")
, p = (i("EZ6M"),
i("K7EQ"))
, m = (i("yp2f"),
i("0od3"))
, g = i("+0OL")
, f = i("b/6L")
, y = i("r4ug")
, v = i("DI/9")
, b = i("Mzdc")
, x = function() {
function e() {
a(this, e)
}
return o(e, [{
key: "init",
value: function() {}
}, {
key: "free",
value: function() {}
}, {
key: "updateData",
value: function(e, t) {
this.type = e.type,
this.pos = d.copy(e.pos)
}
}]),
e
}()
, _ = function() {
function e(t, i) {
a(this, e),
this.particleBarn = t,
this.audioManager = i,
this.display = {
background: new s.Graphics,
water: new s.Graphics,
botObstacle: new s.Container,
mid1Obstacle: new s.Container,
mid2Obstacle: new s.Container,
topObstacle: new s.Container
},
this.sortContainers = !1,
this.mapData = {
places: [],
objects: []
},
this.dataLoaded = !1,
this.mapTexture = null,
this.obstaclePool = new h.Pool(v,this),
this.lootSpawnerPool = new h.Pool(x,this),
this.buildingPool = new h.Pool(b,this),
this.deadObstacleIds = [],
this.deadCeilingIds = [],
this.terrain = null,
this.ripples = []
}
return o(e, [{
key: "free",
value: function() {}
}, {
key: "setData",
value: function(e, t, i, a, n, r) {
this.width = e,
this.height = t,
this.terrain = c.generateTerrain(e, t, i),
this.mapData = {
places: a,
objects: n
},
this.dataLoaded = !0;
var o = this.display
, s = o.background
, l = o.water;
s.clear(),
l.clear(),
this.renderTerrain(s, l, 2 / r.ppu)
}
}, {
key: "getMapTexture",
value: function() {
return this.mapTexture
}
}, {
key: "addObstacleSprite",
value: function(e) {
var t = e.zIdx < 25 ? this.display.botObstacle : e.zIdx < 50 ? this.display.mid1Obstacle : e.zIdx < 100 ? this.display.mid2Obstacle : this.display.topObstacle;
t.addChild(e),
t.__doSort = !0,
this.sortContainers = !0
}
}, {
key: "update",
value: function(e, t) {
for (var i = this.obstaclePool, a = this.buildingPool, n = this.particleBarn, r = this.audioManager, o = this.ripples, s = i.getPool(), l = 0; l < s.length; l++) {
var u = s[l];
u.active && u.update(e, n, r)
}
for (var c = a.getPool(), d = 0; d < c.length; d++) {
var h = c[d];
h.active && h.update(e, n, r, t)
}
for (var p = 0; p < o.length; p++) {
var m = o[p];
m.life <= 0 || (m.delay -= e,
m.delay <= 0 && (m.life -= e,
m.scale += .5 * e,
m.alpha -= e))
}
if (this.sortContainers) {
for (var g in this.display)
if (this.display.hasOwnProperty(g)) {
var f = this.display[g];
f.__doSort && (f.children.sort(function(e, t) {
return e.zIdx === t.zIdx ? e.zOrd - t.zOrd : e.zIdx - t.zIdx
}),
f.__doSort = !1)
}
this.sortContainers = !1
}
}
}, {
key: "renderTerrain",
value: function(e, t, i) {
var a = this.width
, o = this.height
, s = this.terrain
, l = {
x: 0,
y: 0
}
, u = {
x: a,
y: 0
}
, c = {
x: 0,
y: o
}
, d = {
x: a,
y: o
};
t.beginFill(p.water),
t.moveTo(c.x, c.y),
t.lineTo(d.x, d.y),
t.lineTo(u.x, u.y),
t.lineTo(l.x, l.y),
r(t, s.shore),
t.addHole(),
t.closePath(),
e.beginFill(p.beach),
r(e, s.shore),
r(e, s.grass),
e.addHole(),
e.endFill(),
e.beginFill(p.grass),
r(e, s.grass),
e.endFill(),
e.lineStyle(i, 0, .15);
for (var h = 0; h <= a; h += g.map.gridSize) {
n(e, {
x: h,
y: 0
}, {
x: h,
y: o
})
}
for (var m = 0; m <= o; m += g.map.gridSize) {
n(e, {
x: 0,
y: m
}, {
x: a,
y: m
})
}
}
}, {
key: "render",
value: function(e) {
var t = this.display
, i = (this.width,
this.height,
this.obstaclePool,
this.lootSpawnerPool)
, a = this.buildingPool
, n = (this.ripples,
e.pointToScreen(d.create(0, 0)))
, r = e.pointToScreen(d.create(1, 1))
, o = d.sub(r, n);
t.background.position.set(n.x, n.y),
t.background.scale.set(o.x, o.y),
t.water.position.set(n.x, n.y),
t.water.scale.set(o.x, o.y);
for (var s = this.obstaclePool.getPool(), l = 0; l < s.length; l++) {
var u = s[l];
u.active && u.render(e)
}
for (var c = i.getPool(), h = 0; h < c.length; h++) {
var p = c[h];
p.active && (f.debug && y.addCircle(p.pos, 3, 16776960, .25))
}
for (var m = a.getPool(), g = 0; g < m.length; g++) {
var v = m[g];
v.active && v.render(e)
}
for (var b = 0; b < this.ripples.length; b++) {
var x = this.ripples[b];
if (x.life < 0)
x.sprite.visible = !1;
else {
var _ = x.scale / e.ppu;
x.sprite.position.set(x.pos.x, x.pos.y),
x.sprite.scale.set(_, _),
x.sprite.alpha = x.alpha,
x.sprite.visible = x.delay <= 0,
x.sprite.mask = t.riverMask
}
}
}
}, {
key: "getMinimapShapes",
value: function(e) {
var t = u.Defs[e];
if (void 0 !== t.map.shapes)
return t.map.shapes;
var i = null;
switch (t.type) {
case "obstacle":
i = l.copy(t.collision);
break;
case "building":
i = l.copy(t.ceiling.scopeIn[0])
}
var a = [];
return i && a.push({
collider: i,
scale: t.map.scale,
color: t.map.color
}),
a
}
}, {
key: "renderMap",
value: function(e) {
if (this.dataLoaded) {
var t = new s.Container
, i = new s.Container
, a = this.mapData.places
, r = this.mapData.objects
, o = (this.display,
this.width)
, c = this.height
, h = (this.terrain,
c / window.innerHeight)
, p = new s.Graphics;
this.renderTerrain(p, p, h);
var m = {
x: 0,
y: 0
}
, g = {
x: o,
y: 0
}
, f = {
x: 0,
y: c
}
, y = {
x: o,
y: c
};
p.lineStyle(2 * h, 0, 1),
n(p, m, f),
n(p, f, y),
n(p, y, g),
n(p, g, m),
p.position.y = c,
p.scale.y = -1,
t.addChild(p);
for (var v = new s.Graphics, b = 0; b < r.length; b++)
for (var x = r[b], _ = this.getMinimapShapes(x.type), w = 0; w < _.length; w++) {
var T = _[w]
, k = l.transform(T.collider, x.pos, u.oriToRad(x.ori), x.scale)
, S = void 0 !== T.scale ? T.scale : 1;
switch (v.beginFill(T.color, 1),
k.type) {
case l.Type.Circle:
v.drawCircle(k.pos.x, c - k.pos.y, k.rad * S);
break;
case l.Type.Aabb:
var M = d.mul(d.sub(k.max, k.min), .5)
, P = d.add(k.min, M);
M = d.mul(M, S),
v.drawRect(P.x - M.x, c - P.y - M.y, 2 * M.x, 2 * M.y)
}
v.endFill()
}
t.addChild(v);
for (var E = new s.Container, C = 0; C < a.length; C++) {
var O = a[C]
, I = new s.TextStyle({
fontFamily: "Arial",
fontSize: 22,
fontWeight: "bold",
fill: ["#ffffff"],
stroke: "#000000",
strokeThickness: 1,
dropShadow: !0,
dropShadowColor: "#000000",
dropShadowBlur: 1,
dropShadowAngle: Math.PI / 3,
dropShadowDistance: 1,
wordWrap: !1,
align: "center"
})
, A = new s.Text(O.name,I);
A.anchor = new s.Point(.5,.5),
A.x = O.pos.x * this.height / h,
A.y = O.pos.y * this.height / h,
A.alpha = .75,
E.addChild(A)
}
i.addChild(E);
var D = new s.BaseRenderTexture(window.innerHeight,window.innerHeight,s.SCALE_MODES.LINEAR,2)
, R = new s.RenderTexture(D);
t.scale = new s.Point(window.innerHeight / c,window.innerHeight / c),
e.render(t, R, !0),
e.render(i, R, !1),
this.mapTexture = R,
t.destroy({
children: !0
}),
i.destroy({
children: !0
})
}
}
}, {
key: "getGroundSurface",
value: function(e) {
var t = this.buildingPool
, i = this.terrain
, a = void 0;
if ("water" !== (a = m.inside(e, i.shore) ? m.inside(e, i.grass) ? "grass" : "sand" : "water"))
for (var n = t.getPool(), r = 0, o = 0; o < n.length; o++) {
var s = n[o];
if (!(s.zIdx < r))
for (var u = 0; u < s.floor.colliders.length; u++) {
var c = l.intersectCircle(s.floor.colliders[u], e, 1e-4);
if (c) {
r = s.zIdx,
a = s.floor.surface;
break
}
}
}
return a
}
}, {
key: "distanceToShore",
value: function(e) {
return m.distToPoly(e, this.terrain.shore)
}
}, {
key: "addRipple",
value: function(e, t) {
for (var i = this.ripples, a = this.display, n = null, r = 0; r < i.length; r++)
if (i[r].life <= 0) {
n = i[r];
break
}
if (!n) {
n = {};
var o = s.Sprite.fromImage("img/player/ripple-01.svg");
o.visible = !1,
o.anchor = new s.Point(.5,.5),
o.tint = 11792639,
a.water.addChild(o),
n.sprite = o,
i.push(n)
}
n.pos = e,
n.life = 3,
n.delay = t,
n.scale = .15,
n.alpha = 1
}
}]),
e
}();
e.exports = _
},
"5dFr": function(e, t, i) {
"use strict";
function a(e) {
var t = 180 * Math.atan2(e.y, e.x) / Math.PI;
return t < 0 && (t += 360),
t
}
function n(e, t, i, n, r, l) {
var p = this;
this.game = e,
this.audioManager = t,
this.uiManager = i,
this.gameElem = o("#ui-game"),
this.disable = !1,
this.activePlayer = null,
this.playerBarn = n,
this.camera = r,
this.map = l,
this.worldPos = m.create(0, 0),
this.emoteSelector = {
ping: y.None,
emote: c.None
},
this.emoteSoftTicker = 0,
this.emoteHardTicker = 0,
this.emoteCounter = 0,
this.emoteWheelsGreyed = !1,
this.teamEmotesGreyed = !1,
this.wheelKeyTriggered = !1,
this.pingKeyTriggered = !1,
this.pingKeyDown = !1,
this.pingMouseTriggered = !1,
this.wheelDisplayed = !1,
this.emoteKeyTriggered = !1,
this.emoteKeyDown = !1,
this.emoteMouseTriggered = !1,
this.emoteScreenPos = m.create(0, 0),
o(document).on("keydown", function(e) {
67 != e.which || p.pingKeyDown || p.game.gameOver || (p.pingKeyDown = !0,
p.pingKeyTriggered = !0)
}),
o(document).on("keyup", function(e) {
67 == e.which && p.pingKeyDown && !p.game.gameOver && (p.pingKeyDown = !1,
p.pingKeyTriggered = p.wheelDisplayed)
}),
o(document).on("mousedown", function(e) {
("which"in e ? 3 == e.which : 2 == e.button) && !p.pingMouseTriggered && !p.emoteMouseTriggered && p.pingKeyDown && (e.stopPropagation(),
e.preventDefault(),
p.emoteScreenPos = m.create(e.clientX, e.clientY),
p.pingMouseTriggered = !0)
}),
o(document).on("mouseup", function(e) {
if (3 == e.which && p.pingKeyTriggered && p.pingMouseTriggered) {
p.inputReset(),
p.pingKeyTriggered = p.pingKeyDown;
var t = void 0;
if (p.emoteSelector.ping == y.None || p.emoteWheelsGreyed)
p.emoteSelector.emote == c.None || p.emoteSelector.emote == c.Empty || p.emoteWheelsGreyed || (t = p.activePlayer.pos,
p.sendEmote({
type: p.emoteSelector.emote,
useLoadout: p.emoteSelector.useLoadout,
emoteSlot: p.emoteSelector.emoteSlot,
pos: t
}));
else {
f[p.emoteSelector.ping].pingMap && (t = p.uiManager.getWorldPosFromMapPos(p.emoteScreenPos, p.map, p.camera),
t || (t = p.camera.screenToPoint(p.emoteScreenPos)),
t.x = g.clamp(t.x, 0, p.uiManager.mapWidth),
t.y = g.clamp(t.y, 0, p.uiManager.mapHeight),
p.sendPing({
type: p.emoteSelector.ping,
pos: t
}))
}
}
}),
o(document).on("mousedown", function(e) {
("which"in e ? 3 == e.which : 2 == e.button) && !p.pingMouseTriggered && (e.stopPropagation(),
e.preventDefault(),
p.emoteScreenPos = m.create(e.clientX, e.clientY),
p.emoteMouseTriggered = !0)
}),
o(document).on("mouseup", function(e) {
if (3 == e.which && p.emoteMouseTriggered) {
p.inputReset();
var t = void 0;
p.emoteSelector.emote == c.None || p.emoteSelector.emote == c.Empty || p.emoteWheelsGreyed || (t = p.activePlayer.pos,
p.sendEmote({
type: p.emoteSelector.emote,
useLoadout: p.emoteSelector.useLoadout,
emoteSlot: p.emoteSelector.emoteSlot,
pos: t
}))
}
}),
o(window).on("blur", function(e) {
p.inputReset()
}),
o(document).on("keydown", function(e) {
9 == e.which && e.preventDefault()
}),
this.emoteWheels = o("#ui-emotes, #ui-team-pings"),
this.teamEmotes = o(".ui-emote-bottom-left, .ui-emote-top-left"),
this.emoteWheel = o("#ui-emotes"),
this.emoteWheelData = {
middle: {
parent: o("#ui-emote-middle"),
vA: m.create(-1, 1),
vC: m.create(1, 1),
ping: y.None,
emote: c.None,
modular: !1
},
top: {
parent: o("#ui-emote-top"),
vA: m.create(-1, 1),
vC: m.create(1, 1),
ping: y.None,
emote: c.HappyFace,
modular: !1,
useLoadout: !0,
emoteSlot: u.Top
},
right: {
parent: o("#ui-emote-right"),
vA: m.create(1, 1),
vC: m.create(1, -1),
ping: y.None,
emote: c.ThumbsUp,
modular: !1,
useLoadout: !0,
emoteSlot: u.Right
},
bottom: {
parent: o("#ui-emote-bottom"),
vA: m.create(1, -1),
vC: m.create(-1, -1),
ping: y.None,
emote: c.Surviv,
modular: !1,
useLoadout: !0,
emoteSlot: u.Bottom
},
left: {
parent: o("#ui-emote-left"),
vA: m.create(-1, -1),
vC: m.create(-1, 1),
ping: y.None,
emote: c.SadFace,
modular: !1,
useLoadout: !0,
emoteSlot: u.Left
}
},
this.teamPingWheel = o("#ui-team-pings");
var v = {
middle: {
parent: o("#ui-team-ping-middle"),
vA: m.create(-1, 1),
vC: m.create(1, 1),
ping: y.None,
emote: c.None,
modular: !1
},
top: {
parent: o("#ui-team-ping-top"),
vA: m.create(-1, 1),
vC: m.create(1, 1),
ping: y.Danger,
emote: c.None,
modular: !1
},
right: {
parent: o("#ui-team-ping-right"),
vA: m.create(1, 1),
vC: m.create(1, -1),
ping: y.Coming,
emote: c.None,
modular: !1
},
bottom: {
parent: o("#ui-team-ping-bottom"),
vA: m.create(1, -1),
vC: m.create(-1, -1),
ping: y.Help,
emote: c.None,
modular: !1
},
"bottom-left": {
parent: o("#ui-team-ping-bottom-left"),
vA: m.create(-1, -1),
vC: m.create(-1, 0),
ping: y.None,
emote: c.Medical,
modular: !1
},
"top-left": {
parent: o("#ui-team-ping-top-left"),
vA: m.create(-1, 0),
vC: m.create(-1, 1),
ping: y.None,
emote: c.Ammo,
modular: !0
}
};
this.teamPingSelectors = [];
for (var b in v)
if (v.hasOwnProperty(b)) {
var x = v[b]
, _ = x.ping != y.None ? f[x.ping] : d[x.emote]
, w = a(x.vA)
, T = a(x.vC);
this.teamPingSelectors.push({
parent: x.parent,
angleA: w,
angleC: T,
highlight: x.parent.find(".ui-emote-hl"),
highlightDisplayed: !1,
texture: _.texture,
ping: x.ping,
emote: x.emote,
modular: x.modular
})
}
this.displayedSelectors = this.teamPingSelectors,
this.baseScale = 1,
this.container = new h.Container,
this.container.scale = new h.Point(this.baseScale,this.baseScale),
this.pingContainer = new h.Container,
this.container.addChild(this.pingContainer),
this.indContainer = new h.Container,
this.teamIndicators = [];
for (var k = 0; k < 4; k++) {
var S = k
, M = new h.Container
, P = new h.Container
, E = h.Sprite.fromImage("/img/gui/ping-border.svg");
E.scale = new h.Point(.4,.4),
E.anchor = new h.Point(.5,.5),
E.tint = s.teamColors[k],
E.alpha = 0,
E.visible = !0,
M.addChild(E);
var C = h.Sprite.fromImage("/img/gui/ping-team-danger.svg");
C.scale = new h.Point(.4,.4),
C.anchor = new h.Point(.5,.5),
C.tint = s.teamColors[k],
C.alpha = 0,
C.visible = !0,
M.addChild(C);
var O = h.Sprite.fromImage("/img/gui/ping-team-danger.svg");
O.scale = new h.Point(.5,.5),
O.anchor = new h.Point(.5,.5),
O.tint = s.teamColors[k],
O.alpha = 0,
O.visible = !0,
P.addChild(O);
var I = h.Sprite.fromImage("/img/gui/ping-indicator.svg");
I.scale = new h.Point(.5,.5),
I.anchor = new h.Point(.5,0),
I.alpha = 0,
I.visible = !0,
P.addChild(I),
this.pingContainer.addChild(M),
this.indContainer.addChild(P),
this.teamIndicators.push({
ping: {
elem: o("#ui-team-indicators").find(".ui-indicator-ping[data-id=" + S + "]"),
borderElem: o("#ui-team-indicators").find(".ui-indicator-ping-border[data-id=" + S + "]"),
pingContainer: M,
indContainer: P,
borderSprite: {
sprite: E,
baseScale: .4
},
pingSprite: {
sprite: C,
baseScale: .4
},
indSpriteOuter: {
sprite: I,
baseScale: .5
},
indSpriteInner: {
sprite: O,
baseScale: .5
},
displayed: !1,
fadeIn: 0,
life: 0,
fadeOut: 0,
pos: m.create(0, 0)
}
})
}
this.emoteLifeIn = .75,
this.emoteLife = 1,
this.emoteLifeOut = .1,
this.pingFadeIn = .5,
this.pingLife = 4.25,
this.pingFadeOut = .1,
this.wedgeOpacityReset = .75,
this.teamEmoteOpacityReset = .2,
this.emotes = [],
this.newPings = [],
this.newEmotes = []
}
var r = Object.assign || function(e) {
for (var t = 1; t < arguments.length; t++) {
var i = arguments[t];
for (var a in i)
Object.prototype.hasOwnProperty.call(i, a) && (e[a] = i[a])
}
return e
}
, o = i("juYr")
, s = i("+0OL")
, l = i("v8aM")
, u = l.EmoteSlot
, c = l.EmoteType
, d = l.EmoteData
, h = i("gKxX")
, p = i("8iex")
, m = i("/2+T")
, g = i("0od3")
, f = (i("Tf6H"),
i("EZ6M"),
i("moUH").kPings)
, y = i("moUH").Ping;
i("S40U");
n.prototype = {
free: function() {
o(document).off("keydown"),
o(document).off("keyup"),
o(document).off("mousedown"),
o(document).off("mouseup"),
o(window).off("blur"),
this.init()
},
init: function() {
this.emoteWheelsGreyed = !1,
this.emoteWheels.css("opacity", 1),
this.teamEmotesGreyed = !1,
this.teamEmotes.css("opacity", 1),
this.disable = !1,
this.inputReset()
},
inputReset: function() {
this.pingMouseTriggered = !1,
this.pingKeyTriggered = !1,
this.emoteMouseTriggered = !1,
this.emoteKeyTriggered = !1,
this.wheelDisplayed = !1,
this.displayWheel(this.teamPingWheel, !1),
this.displayWheel(this.emoteWheel, !1);
for (var e = 0; e < this.displayedSelectors.length; e++) {
var t = this.displayedSelectors[e]
, i = d[t.emote];
this.teamEmotesGreyed && i.teamOnly ? t.parent.css("opacity", this.teamEmoteOpacityReset) : t.parent.css("opacity", this.wedgeOpacityReset),
t.highlight.css("display", "none"),
t.highlightDisplayed = !1
}
},
sendPing: function(e) {
var t = {};
t.type = e.type,
t.pos = e.pos,
this.newPings.push(t),
this.incrementEmote()
},
addPing: function(e) {
if (this.activePlayer) {
var t = f[e.type];
if (t) {
this.teamId = this.playerBarn.getPlayerInfo(this.activePlayer.__id).teamId;
for (var i = this.playerBarn.getTeamInfo(this.teamId), a = i.playerIds.length, n = 0; n < a; n++) {
var r = i.playerIds[n];
if (r == e.playerId) {
var o = this.teamIndicators[n];
this.playerBarn.getPlayerInfo(r),
this.activePlayer.__id,
this.playerBarn.getTeammateData(r);
this.uiManager.setPlayerPing(e.type, n, e.pos, t.mapLife);
for (var s in o)
if (o.hasOwnProperty(s) && "ping" == s) {
var l = o[s];
l.pos = e.pos,
l.pingSprite.sprite.texture = h.Texture.fromImage(t.texture),
l.indSpriteInner.sprite.texture = h.Texture.fromImage(t.texture),
l.fadeIn = this.pingFadeIn,
l.life = this.pingLife,
l.fadeOut = this.pingFadeOut,
this.audioManager.playSound(t.sound, {
channel: "ui"
})
}
}
}
}
}
},
sendEmote: function(e) {
var t = {};
t.useLoadout = e.useLoadout,
t.type = e.useLoadout ? e.emoteSlot : e.type,
t.pos = e.pos,
this.newEmotes.push(t),
this.incrementEmote()
},
addEmote: function(e) {
var t = d[e.type];
if (t) {
for (var i = null, a = 0; a < this.emotes.length; a++)
this.emotes[a].alive || i ? this.emotes[a].alive && this.emotes[a].playerId == e.playerId && (this.emotes[a].alive = !1) : i = this.emotes[a];
i || (i = {},
i.alive = !1,
i.pos = m.create(0, 0),
i.container = new h.Container,
i.circleOuter = new h.Sprite.fromImage("img/gui/emote-circle-outer.svg"),
i.circleOuter.anchor = new h.Point(.5,.5),
i.baseScale = .55,
i.circleOuter.scale = new h.Point(.8 * i.baseScale,.8 * i.baseScale),
i.circleOuter.tint = 0,
i.circleOuter.visible = !0,
i.container.addChild(i.circleOuter),
i.sprite = new h.Sprite,
i.sprite.anchor = new h.Point(.5,.5),
i.container.addChild(i.sprite),
i.sprite.scale = new h.Point(i.baseScale,i.baseScale),
i.posOffset = new h.Point(0,4),
i.container.scale = new h.Point(1,1),
i.container.visible = !1,
this.container.addChild(i.container),
this.emotes.push(i)),
i.alive = !0,
i.isNew = !0,
i.type = e.type,
i.playerId = e.playerId,
i.pos = m.create(0, 0),
i.lifeIn = this.emoteLifeIn,
i.life = this.emoteLife,
i.lifeOut = this.emoteLifeOut,
i.sprite.texture = h.Texture.fromImage(t.texture),
i.container.visible = !1
}
},
incrementEmote: function() {
++this.emoteCounter >= s.player.emoteThreshold && (this.emoteHardTicker = this.emoteHardTicker > 0 ? this.emoteHardTicker : 1.5 * s.player.emoteHardCooldown)
},
update: function(e, t, i, n, r, o) {
var l = this.playerBarn
, u = this.camera;
if (this.activePlayer = i,
t == i.__id && !i.netData.dead || this.disable || (this.free(),
this.disable = !0),
!this.disable) {
var f = i.localData.weapons[i.localData.curWeapIdx]
, v = s.items[f.name]
, b = "";
if (v && (b = v.ammo ? v.ammo : b),
this.wheelKeyTriggered = this.pingKeyTriggered || this.emoteMouseTriggered,
this.emoteSoftTicker -= e,
this.emoteCounter >= s.player.emoteThreshold && this.emoteHardTicker > 0 ? (this.emoteHardTicker -= e,
this.emoteHardTicker < 0 && (this.emoteCounter = 0)) : this.emoteSoftTicker < 0 && this.emoteCounter > 0 && (this.emoteCounter--,
this.emoteSoftTicker = 1.5 * s.player.emoteSoftCooldown),
!this.pingMouseTriggered && !this.emoteMouseTriggered || this.wheelDisplayed || (this.parentDisplayed = this.pingMouseTriggered ? this.teamPingWheel : this.emoteWheel,
this.parentDisplayed.css({
display: "block",
left: this.emoteScreenPos.x,
top: this.emoteScreenPos.y
}),
this.displayWheel(this.parentDisplayed, !0),
this.wheelDisplayed = !0,
this.displayedSelectors = this.pingMouseTriggered ? this.teamPingSelectors : this.emoteWheelSelectors,
this.worldPos = u.screenToPoint(this.emoteScreenPos)),
this.wheelDisplayed) {
this.emoteHardTicker > 0 && !this.emoteWheelsGreyed ? (this.emoteWheels.css("opacity", .5),
this.emoteWheelsGreyed = !0) : this.emoteHardTicker <= 0 && this.emoteWheelsGreyed && (this.emoteWheels.css("opacity", 1),
this.emoteWheelsGreyed = !1),
this.teamEmotesGreyed || 1 != r || (this.teamEmotes.css("opacity", this.teamEmoteOpacityReset),
this.teamEmotesGreyed = !0);
var x = m.sub(n, this.emoteScreenPos);
x.y *= -1;
for (var _ = m.length(x), w = a(x), T = (y.None,
null), k = 0; k < this.displayedSelectors.length; k++) {
var S = this.displayedSelectors[k];
if (S.modular) {
var M = S.emote;
switch (b) {
case "9mm":
S.emote = c.Ammo9mm,
S.texture = d[c.Ammo9mm].texture;
break;
case "12gauge":
S.emote = c.Ammo12Gauge,
S.texture = d[c.Ammo12Gauge].texture;
break;
case "762mm":
S.emote = c.Ammo762mm,
S.texture = d[c.Ammo762mm].texture;
break;
case "556mm":
S.emote = c.Ammo556mm,
S.texture = d[c.Ammo556mm].texture;
break;
default:
S.emote = c.Ammo,
S.texture = d[c.Ammo].texture
}
M != S.emote && S.parent.find(".ui-emote-image").css("background-image", "url(" + S.texture + ")")
}
var P = S.ping != y.None || S.emote != c.None
, E = d[S.emote]
, C = E.teamOnly && 1 == r;
_ <= 35 && !P && this.emoteHardTicker <= 0 && !C ? T = S : g.isAngleBetween(w, S.angleC, S.angleA) && _ > 35 && P && this.emoteHardTicker <= 0 && !C ? T = S : S.highlightDisplayed && (S.parent.css("opacity", this.wedgeOpacityReset),
S.highlight.css("display", "none"),
S.highlightDisplayed = !1)
}
T && (this.emoteSelector = T,
T.highlightDisplayed || (T.parent.css("opacity", 1),
T.highlight.css("display", "block"),
T.highlightDisplayed = !0))
}
}
for (var O = 0; O < this.emotes.length; O++) {
var I = this.emotes[O];
if (I.alive) {
var A = !1
, D = m.create(0, 0)
, R = l.getPlayerById(I.playerId);
if (R && !R.netData.dead && (D = m.copy(R.pos),
A = !0),
!A) {
var L = o.getDeadBodyById(I.playerId);
L && (D = m.copy(L.pos),
A = !0)
}
if (A) {
if (I.isNew) {
var j = d[I.type];
this.audioManager.playSound(j.sound, {
channel: "ui",
soundPos: D
})
}
I.isNew = !1,
I.pos = D,
I.lifeIn > 0 ? I.lifeIn -= e : I.life > 0 ? I.life -= e : I.lifeOut > 0 && (I.lifeOut -= e),
I.alive = I.alive && I.lifeOut > 0
} else
I.alive = !1
}
}
var F = m.create(.5 * u.screenWidth / u.z(), .5 * u.screenHeight / u.z())
, B = {
min: m.sub(u.pos, F),
max: m.add(u.pos, F)
};
this.teamId = l.getPlayerInfo(i.__id).teamId;
for (var N = l.getTeamInfo(this.teamId), z = N.playerIds.length, U = 0; U < z; U++) {
var H = this.teamIndicators[U]
, G = N.playerIds[U]
, V = (l.getPlayerInfo(G),
G == this.activePlayer.__id)
, W = l.getTeammateData(G);
for (var q in H)
if (H.hasOwnProperty(q)) {
var X = H[q]
, K = X.pingContainer
, Y = X.indContainer
, Z = X.borderSprite.sprite
, J = X.pingSprite.sprite
, Q = X.indSpriteOuter.sprite
, $ = X.indSpriteInner.sprite
, ee = !0;
if (X.fadeIn -= e,
X.life -= e,
X.fadeOut -= X.life > 0 ? 0 : e,
X.fadeOut > 0) {
var te = X.pos
, ie = m.normalizeSafe(m.sub(te, u.pos), m.create(1, 0))
, ae = p.intersectRayAabb(u.pos, ie, B.min, B.max)
, ne = Math.atan2(ie.y, -ie.x) + .5 * Math.PI
, re = u.pointToScreen(ae)
, oe = p.testCircleAabb(te, s.player.radius, B.min, B.max)
, se = u.pixels(X.borderSprite.baseScale)
, le = u.pixels(X.pingSprite.baseScale);
if (Z.scale = new h.Point(se,se),
J.scale = new h.Point(le,le),
!W.dead) {
ee = X.fadeOut < 0;
var ue = oe ? u.pointToScreen(te).x : g.clamp(re.x, 64, u.screenWidth - 64)
, ce = oe ? u.pointToScreen(te).y : g.clamp(re.y, 64, u.screenHeight - 64)
, de = u.pointToScreen(te).x
, he = u.pointToScreen(te).y;
J.position.x = de,
J.position.y = he,
Z.position.x = de,
Z.position.y = he,
Q.position.x = ue,
Q.position.y = ce,
Q.rotation = ne,
$.position.x = ue,
$.position.y = ce;
var pe = Z.alpha <= 0 ? 1 : Z.alpha - e;
Z.alpha = pe;
var me = u.pixels(X.borderSprite.baseScale * (2 - pe));
if (Z.scale = new h.Point(me,me),
$.alpha = oe ? 0 : pe,
X.fadeIn > 0) {
var ge = 1 - X.fadeIn / this.pingFadeIn;
K.alpha = 1,
Y.alpha = 1,
J.alpha = 1,
Q.alpha = oe ? 0 : ge
} else
Q.alpha = oe ? 0 : 1;
if (X.life < 0) {
var fe = X.fadeOut / this.pingFadeOut;
K.alpha = fe,
Y.alpha = fe
}
X.displayed || (K.visible = !0,
Y.visible = !V,
X.displayed = !0)
}
}
ee && X.displayed && (K.visible = !1,
Y.visible = !1,
X.displayed = !1)
}
}
},
displayWheel: function(e, t) {
e.css("display", t ? "block" : "none")
},
updateEmoteWheel: function(e) {
var t = {
top: e[u.Top],
right: e[u.Right],
bottom: e[u.Bottom],
left: e[u.Left]
};
for (var i in t)
if (t.hasOwnProperty(i)) {
var n = d[t[i]];
if (this.emoteWheelData[i] && void 0 != n) {
var o = d[t[i]];
o.teamOnly || (this.emoteWheelData[i].emote = t[i])
}
}
this.emoteWheelSelectors = [];
for (var s in this.emoteWheelData)
if (this.emoteWheelData.hasOwnProperty(s)) {
var l = this.emoteWheelData[s]
, c = d[l.emote]
, h = a(l.vA)
, p = a(l.vC);
this.emoteWheelSelectors.push(r({
angleA: h,
angleC: p,
highlight: l.parent.find(".ui-emote-hl"),
highlightDisplayed: !1,
texture: c.texture
}, l));
var m = l.parent.find(".ui-emote-image");
m.css("background-image", "url(" + c.texture + ")")
}
},
render: function(e, t) {
for (var i = 0; i < this.emotes.length; i++) {
var a = this.emotes[i];
if (a.container.visible = a.alive,
a.alive) {
var n = 0;
if (a.lifeIn > 0) {
var r = 1 - a.lifeIn / this.emoteLifeIn;
n = g.easeOutElastic(r)
} else if (a.life > 0)
n = 1;
else if (a.lifeOut > 0) {
var o = a.lifeOut / this.emoteLifeOut;
n = o
}
var s = m.add(a.pos, m.mul(a.posOffset, 1 / g.clamp(e.zoom, .75, 1)))
, l = e.pointToScreen(s)
, u = n * a.baseScale * g.clamp(e.zoom, .9, 1.75);
a.container.position = new h.Point(l.x,l.y),
a.container.scale = new h.Point(u,u)
}
}
}
},
e.exports = {
EmoteManager: n
}
},
"6YQA": function(e, t, i) {
"use strict";
function a() {
return JSON.parse(localStorage.getItem(d)) || {}
}
function n(e, t) {
var i = a();
return void 0 !== i[e] ? i[e] : t
}
function r(e, t) {
var i = a();
i[e] = t,
localStorage.setItem(d, JSON.stringify(i))
}
function o() {
this.enabled = !1,
this.zoom = l.scopeZoomRadius["8xscope"],
this.cull = n("cull", !1),
this.debug = n("debug", !0),
this.setEnabled(!1)
}
var s = i("juYr")
, l = (i("gKxX"),
i("+0OL"))
, u = i("0od3")
, c = (i("/2+T"),
i("S40U"))
, d = "surviv_editor";
o.prototype = {
free: function() {},
setEnabled: function(e) {
var t = this;
this.enabled = e,
s("#ui-editor").css("display", e ? "block" : "none"),
s("#ui-game").css("display", e ? "none" : "block"),
s("#gameAreaWrapper").css("cursor", e ? "default" : "crosshair");
var i = function(e) {
var i = s("<input/>", {
type: "checkbox",
value: "value",
checked: t[e]
});
return i.on("click", function(a) {
a.stopPropagation(),
t[e] = i.prop("checked"),
r(e, t[e])
}),
i
};
this.uiPos = s("<div/>"),
this.uiZoom = s("<div/>"),
this.uiCull = i("cull"),
this.uiDebug = i("debug");
var a = s("#ui-editor-info-list");
a.empty(),
a.append(s("<li/>").append(this.uiPos)),
a.append(s("<li/>").append(this.uiZoom));
var n = s("<div/>", {
html: "Cull: "
});
a.append(s("<li/>").append(n.append(this.uiCull)));
var o = s("<div/>", {
html: "Debug: "
});
a.append(s("<li/>").append(o.append(this.uiDebug)))
},
update: function(e, t, i, a) {
t.keyPressed(c.Key.Plus) && (this.zoom -= 8),
t.keyPressed(c.Key.Minus) && (this.zoom += 8),
t.keyPressed(c.Key.Zero) && (this.zoom = i.getScopeZoom()),
this.zoom = u.clamp(this.zoom, .5, 400);
var n = i.netData.pos.x.toFixed(2)
, r = i.netData.pos.y.toFixed(2);
this.uiPos.html("Pos: " + n + ", " + r),
this.uiZoom.html("Zoom: " + this.zoom)
}
},
e.exports = o
},
"6vnV": function(e, t, i) {
t = e.exports = i("lcwS")(void 0),
t.push([e.i, '/**\n * game-area-wrapper\n */\nimg {\n -moz-user-select: none;\n -webkit-user-select: none;\n -ms-user-select: none;\n user-select: none;\n -webkit-user-drag: none;\n user-drag: none;\n -webkit-touch-callout: none;\n}\n\n#game-area-wrapper {\n position: absolute !important;\n top: 0;\n left: 0;\n cursor: crosshair;\n}\n\n.click-through {\n pointer-events: none;\n}\n\n#cvs {\n filter: none;\n}\n\n/**\n * ui-game\n */\n\n#ui-game {\n filter: none;\n position: absolute;\n top: 0px;\n left: 0px;\n width: 100%;\n height: 100%;\n}\n\n/**\n * ui-center\n */\n\n#ui-center {\n position: absolute;\n color: #FFF;\n top: 25%;\n left: 50%;\n transform: translateX(-50%);\n pointer-events: all;\n z-index: 10;\n}\n\n@media (max-height: 768px), (max-width: 1200px) {\n #ui-center {\n top: 15%;\n transform: translateX(-50%) scale(0.85);\n }\n}\n\n#ui-game-menu {\n display: none;\n width: 250px;\n padding: 10px 15px;\n max-height: 448px;\n}\n\n#ui-game-menu p{\n display: inline-block;\n position: relative;\n bottom: 4px;\n font-size: 14px;\n}\n\n.btn-game-menu {\n position: relative;\n margin: auto;\n margin-top: 5px;\n margin-bottom: 5px;\n color: white;\n font-size: 16px;\n text-shadow: 0 1px 2px rgba(0, 0, 0, 0.25);\n background-color: #50afab;\n border-bottom: 2px solid #387c79;\n -webkit-box-shadow: inset 0 -2px #387c79;\n box-shadow: inset 0 -2px #387c79;\n background-repeat: no-repeat;\n cursor: pointer;\n}\n\n#btn-game-fullscreen {\n background-size: 34px;\n background-position: 4px 2px;\n background-image: url(../img/gui/minimize.svg);\n}\n\n#btn-game-sound {\n background-size: 44px;\n background-position: 2px -3px;\n}\n\n#btn-game-quit {\n margin-top: 40px;\n background-size: 44px;\n background-position: -2px -3px;\n background-image: url(../img/gui/quit.svg);\n}\n\n#btn-game-resume {\n margin-top: 40px;\n background-size: 44px;\n background-position: -2px -3px;\n background-image: url(../img/gui/resume.svg);\n}\n\n/**\n * ui-top-center\n */\n\n#ui-top-center {\n position: absolute;\n color: #FFF;\n top: 0%;\n left: 50%;\n transform: translateX(-50%);\n}\n\n#ui-top-center .top-center-text {\n text-align: center;\n width: 100vw;\n padding: 8px;\n}\n\n#ui-waiting-text {\n display: none;\n color: white;\n text-shadow: 2px 2px 0px rgba(0, 0, 0, 1);\n font-size: 32px;\n font-weight: bold;\n}\n\n#ui-waiting-text span {\n font-size: 32px;\n font-weight: bold;\n}\n\n.top-center-text .spectate-text {\n display: inline-block;\n text-shadow: 2px 2px 0px rgba(0, 0, 0, 1);\n font-size: 24px;\n font-weight: bold;\n overflow: hidden;\n height: 32px;\n}\n\n@media (max-width: 1024px) {\n .top-center-text .spectate-text {\n font-size: 18px;\n }\n}\n\n.top-center-text .spectate-desc {\n color: white;\n margin-right: 8px;\n}\n\n.ui-spectate-mode {\n display: none;\n}\n\n#ui-spectate-text {\n position: relative;\n}\n\n#spectate-player {\n max-width: 250px;\n white-space: nowrap;\n text-overflow: ellipsis;\n color: cyan;\n}\n\n/**\n * ui-top-center-scopes\n */\n\n#ui-top-center-scopes {\n margin-top: var(--side-pad);\n text-align: center;\n}\n\n@media (max-height: 768px), (max-width: 1200px) {\n #ui-top-center-scopes {\n transform: scale(0.85);\n }\n}\n\n.ui-zoom {\n background: rgba(0, 0, 0, 0.3);\n border-radius: 36px;\n width: 64px;\n height: 64px;\n opacity: 0.6;\n display: inline-block;\n}\n\n.ui-zoom-hover:hover {\n opacity: 1.0;\n}\n\n.ui-zoom-active {\n vertical-align: baseline;\n opacity: 1.0;\n transform: scale(1);\n -webkit-transition: all 100ms ease-in;\n -webkit-transform: scale(1);\n -ms-transition: all 100ms ease-in;\n -ms-transform: scale(1);\n -moz-transition: all 100ms ease-in;\n -moz-transform: scale(1);\n transition: all 100ms ease-in;\n transition: opacity .25s ease-out;\n -moz-transition: opacity .25s ease-out;\n -webkit-transition: opacity .25s ease-out;\n -o-transition: opacity .25s ease-out;\n}\n\n.ui-zoom .ui-zoom-image {\n width: 64px;\n height: 64px;\n opacity: 0.4;\n padding: 2px;\n}\n\n.ui-zoom .ui-zoom-text {\n margin-top: 14px;\n width: 100%;\n}\n\n.ui-zoom .ui-zoom-level {\n font-size: 32px;\n text-align: center;\n width: 100%;\n /*cursor: inherit;*/\n}\n\n.ui-zoom .ui-zoom-append {\n font-size: 24px;\n}\n\n.ui-zoom-inactive {\n display: none;\n margin-left: -8px;\n margin-right: -8px;\n -webkit-transition: all 100ms ease-in;\n -webkit-transform: scale(0.5);\n -ms-transition: all 100ms ease-in;\n -ms-transform: scale(0.5);\n -moz-transition: all 100ms ease-in;\n -moz-transform: scale(0.5);\n transition: all 100ms ease-in;\n transform: scale(0.5);\n}\n\n.ui-zoom-inactive:hover {\n cursor: pointer !important;\n opacity: 1.0;\n}\n\n/**\n * ui-team-pings and ui-emotes\n */\n\n.ui-emote-wheel {\n z-index: 3;\n display: none;\n position: fixed;\n }\n\n.ui-emote-parent {\n opacity: 0.75;\n}\n\n.ui-emote-hl {\n z-index: 2;\n display: none;\n}\n\n.ui-emote {\n position: fixed;\n width: 256px;\n height: 256px;\n background-size: 256px;\n background-repeat: no-repeat;\n transform: translate(-50%, -50%);\n}\n\n.ui-emote-bg-circle {\n background-image: url(../img/gui/ping-part-circle.svg);\n}\n\n.ui-emote-bg-quarter {\n background-image: url(../img/gui/ping-part-quarter.svg);\n}\n\n.ui-emote-bg-eighth {\n background-image: url(../img/gui/ping-part-eighth.svg);\n}\n\n.ui-emote-middle .ui-emote-image {\n width: 24px !important;\n height: 24px !important;\n background-size: 24px !important;\n background-image: url(../img/gui/cursor-02.svg);\n}\n\n.ui-emote-top .ui-emote-image {\n margin-top: -78px;\n background-image: url(../img/gui/ping-team-danger.svg);\n}\n\n.ui-emote-right .ui-emote {\n transform: translate(-50%, -50%) rotate(90deg);\n}\n\n.ui-emote-right .ui-emote-image {\n margin-left: 78px;\n background-image: url(../img/gui/ping-team-coming.svg);\n}\n\n.ui-emote-bottom .ui-emote {\n transform: translate(-50%, -50%) rotate(180deg);\n}\n\n.ui-emote-bottom .ui-emote-image {\n margin-top: 78px;\n background-image: url(../img/gui/ping-team-help.svg);\n}\n\n.ui-emote-left .ui-emote {\n transform: translate(-50%, -50%) rotate(270deg);\n}\n\n.ui-emote-left .ui-emote-image {\n margin-left: -78px;\n background-image: url(../img/gui/ping-team-help.svg);\n}\n\n.ui-emote-top-left .ui-emote-image {\n margin-left: -80px;\n margin-top: -30px;\n background-image: url(../img/loot/loot-ammo-box.svg);\n}\n\n.ui-emote-bottom-left .ui-emote {\n transform: translate(-50%, -50%) rotate(-45deg);\n}\n\n.ui-emote-bottom-left .ui-emote-image {\n margin-left: -80px;\n margin-top: 30px;\n background-image: url(../img/loot/loot-medical-healthkit.svg);\n}\n\n.ui-emote-circle .ui-emote-hl {\n background-image: url(../img/gui/ping-part-circle-highlight.svg);\n}\n\n.ui-emote-quarter .ui-emote-hl {\n background-image: url(../img/gui/ping-part-quarter-highlight.svg);\n}\n\n.ui-emote-eighth .ui-emote-hl {\n background-image: url(../img/gui/ping-part-eighth-highlight.svg);\n}\n\n.ui-emote-image {\n z-index: 1;\n position: fixed;\n background-repeat: no-repeat;\n transform: translate(-50%, -50%);\n}\n\n.ui-emote-image-large {\n width: 64px;\n height: 64px;\n background-size: 64px;\n}\n\n.ui-emote-image-small {\n width: 35px;\n height: 35px;\n background-size: 35px;\n}\n\n/**\n * ui-team-indicators\n */\n\n.ui-team-indicator {\n z-index: 2;\n display: none;\n position: fixed;\n top: 0px;\n left: 0px;\n border-radius: 32px;\n width: 64px;\n height: 64px;\n background-size: 64px;\n background-repeat: no-repeat;\n background-image: url(../img/gui/indicator.svg);\n transform: translate(-50%, -50%);\n}\n\n.ui-team-indicator-pos {\n opacity: 0.75;\n position: relative;\n border-radius: 24px;\n width: 32px;\n height: 32px;\n top: 23px;\n left: 32px;\n transform: translate(-50%, -50%);\n}\n\n.ui-team-indicator-image {\n width: 32px;\n height: 32px;\n background-size: 32px;\n background-repeat: no-repeat;\n background-image: url(../img/gui/ping-team-danger.svg);\n}\n\n.ui-indicator-ping-border {\n z-index: 0;\n display: none;\n position: fixed;\n top: 0px;\n left: 0px;\n width: 160px;\n height: 160px;\n position: relative;\n background-size: 160px;\n background-repeat: no-repeat;\n background-image: url(../img/gui/ping-border.svg);\n transform: translate(-50%, -50%);\n}\n\n/**\n * ui-top-left\n */\n\n#ui-top-left {\n position: absolute;\n color: #FFF;\n font-size: 16px;\n top: var(--side-pad);\n left: var(--side-pad);\n display: block;\n}\n\n@media (max-height: 768px), (max-width: 1200px) {\n #ui-top-left {\n transform-origin: top left;\n transform: scale(0.85);\n }\n}\n\n.ui-bg-standard {\n background: rgba(0, 0, 0, 0.24);\n border-radius: 5px;\n}\n\n#ui-team {\n\n}\n\n.ui-team-member {\n display: none;\n position: relative;\n width: 200px;\n height: 32px;\n padding: 4px;\n margin-bottom: 8px;\n}\n\n.ui-team-member-name {\n font-weight: bold;\n text-shadow: 1px 1px 0px rgba(0, 0, 0, 1);\n font-size: 16px;\n max-width: 180px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.ui-team-member-color {\n position: absolute;\n top: 5px;\n right: 5px;\n border-radius: 7px;\n width: 14px;\n height: 14px;\n}\n\n.ui-background-yellow {\n background-color: yellow;\n}\n\n.ui-background-blue {\n background-color: blue;\n}\n\n.ui-background-red {\n background-color: red;\n}\n\n.ui-background-purple {\n background-color: purple;\n}\n\n.ui-background-cyan {\n background-color: cyan;\n}\n\n.ui-team-member-status {\n display: none;\n position: absolute;\n top: 4px;\n right: -38px;\n width: 32px;\n height: 32px;\n background-size: 32px;\n background-repeat: no-repeat;\n}\n\n.ui-team-member-status-downed {\n border-radius: 16px;\n display: block !important;\n background-image: url(../img/gui/down.svg) !important;\n}\n\n.ui-team-member-status-dead {\n display: block !important;\n background-image: url(../img/gui/skull-team.svg) !important;\n opacity: 0.5 !important;\n}\n\n.ui-team-member-status-disconnected {\n display: block !important;\n background-image: url(../img/gui/cursor-02.svg) !important;\n opacity: 0.5 !important;\n}\n\n.ui-team-member-health {\n margin-top: 4px;\n}\n\n.ui-team-member-health .ui-bar-inner {\n background-color: white;\n z-index: 1;\n position: absolute;\n border-radius: 4px;\n width: 200px;\n height: 10px;\n transition: width 0.0s;\n transition-property: width;\n transition-duration: 0.0s;\n transition-timing-function: ease-out;\n transition-delay: initial;\n}\n\n.ui-team-member-health .ui-bar-danger {\n background: rgba(255, 0, 0, 0.8);\n animation-name: pulse;\n animation-duration: 0.5s;\n animation-timing-function: ease-out;\n animation-delay: 0;\n animation-direction: alternate;\n animation-iteration-count: infinite;\n animation-fill-mode: none;\n animation-play-state: running;\n}\n\n.ui-team-member-health .ui-health-depleted {\n z-index: 0;\n background: rgba(255, 255, 255, 1.0);\n transition: width 1.0s;\n transition-property: width;\n transition-duration: 1.0s;\n transition-timing-function: ease-out;\n transition-delay: initial;\n}\n\n#ui-spectate-options {\n position: relative;\n pointer-events: all;\n width: 100%;\n}\n\n#ui-spectate-buttons {\n display: inline-block;\n width: 192px;\n padding: 8px 8px 0px 8px;\n text-align: center;\n width: 192px;\n}\n\n#ui-spectate-options a {\n position: relative;\n color: white;\n font-size: 16px;\n text-shadow: 0 1px 2px rgba(0, 0, 0, 0.25);\n background: #50afab;\n border-bottom: 2px solid #387c79;\n -webkit-box-shadow: inset 0 -2px #387c79;\n box-shadow: inset 0 -2px #387c79;\n cursor: pointer;\n}\n\n#btn-spectate-prev-player {\n margin-bottom: 24px;\n}\n\n#ui-spectate-stats {\n vertical-align: top;\n display: none;\n}\n\n#ui-spectate-stats-header {\n text-align: center;\n font-size: 24px;\n font-weight: bold;\n font-family: arial;\n padding: 8px;\n}\n\n#ui-spectate-stats-table {\n width: 100%;\n background-color: transparent;\n margin: auto;\n margin-right: 0px;\n border-collapse: collapse;\n}\n\n#ui-spectate-stats tbody,\n#ui-spectate-stats td,\n#ui-spectate-stats th {\n padding: 0px 8px 8px 16px;\n font-size: 18px;\n}\n\n.ui-spectate-stats-category {\n width: 130px;\n color: rgba(255,255,255,0.75);\n}\n\n.ui-spectate-stats-value {\n width: 75px;\n color: white;\n}\n\n/**\n * ui-top-right\n */\n\n#ui-top-right {\n position: absolute;\n color: #FFF;\n font-size: 16px;\n top: var(--side-pad);\n right: var(--side-pad);\n display: flex;\n}\n\n@media (max-height: 768px), (max-width: 1200px) {\n #ui-top-right {\n transform-origin: top right;\n transform: scale(0.85);\n }\n}\n\n#ui-leaderboard {\n font-weight: bold;\n text-align: center;\n width: 85px;\n display: inline-block;\n}\n\n#ui-leaderboard-alive {\n background: rgba(0, 0, 0, 0.4);\n border-radius: 5px;\n margin-bottom: 8px;\n padding: 8px;\n height: 64px;\n width: 72px;\n}\n\n#ui-players-alive {\n position: relative;\n font-size: 54px;\n}\n\n.ui-players-alive-pulse {\n animation-name: pulseAlive;\n animation-duration: 2.0s;\n animation-timing-function: ease-out;\n animation-delay: 0s;\n animation-iteration-count: infinite;\n animation-fill-mode: none;\n animation-play-state: running;\n}\n\n@-webkit-keyframes pulseAlive {\n 0% {\n color: rgba(255, 255, 255, 1.0);\n }\n 20% {\n color: rgba(255, 0, 0, 1.0);\n }\n 40% {\n color: rgba(255, 255, 255, 1.0);\n }\n 100% {\n color: rgba(255, 255, 255, 1.0);\n }\n}\n\n@keyframes pulseAlive {\n 0% {\n color: rgba(255, 255, 255, 1.0);\n }\n 20% {\n color: rgba(255, 0, 0, 1.0);\n }\n 40% {\n color: rgba(255, 255, 255, 1.0);\n }\n 100% {\n color: rgba(255, 255, 255, 1.0);\n }\n}\n\n#ui-leaderboard-header {\n font-size: 24px;\n margin-bottom: 8px;\n}\n\n#ui-killfeed {\n display: inline-block;\n margin-left: 24px;\n height: 100px;\n}\n\n#ui-killfeed-contents {\n width: 800px;\n}\n\n#ui-killfeed-contents .killfeed-div {\n position: absolute;\n right: 100px;\n background-color: rgba(0, 0, 0, 0.4);\n padding: 4px 8px;\n border-radius: 2px;\n height: 22px;\n line-height: 24px;\n}\n\n.killfeed-div div {\n float: left;\n font-size: 16px;\n font-weight: bold;\n color: #EFEEEE;\n}\n\n#ui-killfeed .killfeed-text {\n max-width: 550px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n/**\n * ui-right-center\n */\n\n#ui-right-center {\n position: absolute;\n color: #FFF;\n top: 40%;\n transform: translateY(-50%);\n right: var(--side-pad);\n opacity: 0.75;\n transition: opacity .25s ease-out;\n -moz-transition: opacity .25s ease-out;\n -webkit-transition: opacity .25s ease-out;\n -o-transition: opacity .25s ease-out;\n}\n\n\n#ui-right-center:hover {\n opacity: 1;\n}\n\n.ui-ammo .ui-loot-image {\n position: absolute;\n height: 22px;\n width: 22px;\n right: 5px;\n margin-top: 5px;\n top: 0;\n bottom: 0;\n}\n\n.ui-ammo .ui-loot-overlay {\n position: absolute;\n height: 22px;\n width: 22px;\n right: 5px;\n margin-top: 5px;\n top: 0;\n bottom: 0;\n}\n\n#ui-medical-interactive {\n margin-bottom: 32px;\n}\n\n.ui-medical .ui-loot-image {\n position: absolute;\n height: 30px;\n width: 30px;\n background-size: 30px;\n background-repeat: no-repeat;\n right: 5px;\n margin-top: 1px;\n top: 0;\n bottom: 0;\n}\n\n.ui-medical:hover {\n cursor: pointer !important;\n}\n\n.ui-loot {\n background: rgba(0, 0, 0, 0.4);\n border-radius: 5px;\n width: 85px;\n height: 32px;\n margin-left: auto;\n margin-bottom: 5px;\n}\n\n.ui-loot:hover {\n opacity: 1 !important;\n}\n\n.ui-outline-hover {\n border: 2px solid rgba(0,255,0,0.0);\n}\n\n.ui-outline-hover:hover{\n -webkit-transition : border 100ms ease-out;\n -moz-transition : border 100ms ease-out;\n -o-transition : border 100ms ease-out;\n border: 2px solid rgba(0,255,0,1.0);\n}\n\n.ui-scale-hover {\n transform: scale(1);\n -webkit-transition: all 100ms ease-in;\n -webkit-transform: scale(1);\n -ms-transition: all 100ms ease-in;\n -ms-transform: scale(1);\n -moz-transition: all 100ms ease-in;\n -moz-transform: scale(1);\n transition: all 100ms ease-in;\n}\n\n.ui-scale-hover:hover {\n -webkit-transition: all 100ms ease-in;\n -webkit-transform: scale(1.1);\n -ms-transition: all 100ms ease-in;\n -ms-transform: scale(1.1);\n -moz-transition: all 100ms ease-in;\n -moz-transform: scale(1.1);\n transition: all 100ms ease-in;\n transform: scale(1.1);\n}\n\n.ui-loot .ui-loot-count {\n position: absolute;\n font-size: 24px;\n font-weight: bold;\n left: 10px;\n top: 2px;\n text-align: center;\n}\n\n@media (max-height: 768px), (max-width: 1200px) {\n #ui-right-center {\n top: 42%;\n transform-origin: right;\n transform: translateY(-50%) scale(0.8);\n }\n/* #ui-backpack {\n margin-bottom: 8px;\n }*/\n #ui-medical-interactive {\n margin-bottom: 8px;\n }\n}\n\n/**\n * ui-upper-center\n */\n\n#ui-upper-center {\n position: absolute;\n display: flex;\n color: #FFF;\n top: 180px;\n left: 50%;\n transform: translateX(-50%);\n}\n\n#ui-announcement {\n display: none;\n color: yellow;\n text-shadow: 2px 2px 0px rgba(0, 0, 0, 1);\n font-size: 32px;\n font-weight: bold;\n text-align: center;\n width: 100vw;\n}\n\n/**\n * ui-lower-center\n */\n\n#ui-lower-center {\n position: absolute;\n color: #FFF;\n bottom: 40%;\n left: 50%;\n}\n\n@media (max-height: 768px), (max-width: 1200px) {\n #ui-lower-center {\n transform-origin: left bottom;\n transform: scale(0.85);\n bottom: 33%;\n }\n}\n\n#ui-interaction {\n display: flex;\n}\n\n#ui-interaction-press {\n background: rgba(0, 0, 0, 0.4);\n border-radius: 5px;\n margin-left: -24px;\n width: 48px;\n height: 48px;\n font-size: 42px;\n font-weight: bold;\n text-align: center;\n}\n\n#ui-interaction-outer {\n background: rgba(0, 0, 0, 0.4);\n border-radius: 5px;\n margin-left: 10px;\n padding: 0px 15px;\n height: 48px;\n}\n\n#ui-interaction-outer #ui-interaction-description{\n margin-top: 10px;\n font-size: 24px;\n text-align: center;\n}\n\n/**\n * ui-bottom-left\n */\n\n#ui-bottom-left {\n position: absolute;\n bottom: var(--side-pad);\n left: var(--side-pad);\n z-index: 1;\n}\n\n#ui-map-container {\n position: absolute;\n bottom: 52px;\n}\n\n#ui-map-info {\n position: absolute;\n color: white;\n width: 100px;\n height: 36px;\n bottom: 218px;\n left: 82px;\n background: rgba(0, 0, 0, 0.4);\n border-radius: 5px;\n}\n\n#ui-gas-icon {\n padding: 6px;\n display: inline-block;\n height: 24px;\n width: 24px;\n margin-left: 2px;\n background-size: 24px;\n background-repeat: no-repeat;\n background-position: 6px 6px;\n}\n\n.gas-icon{\n background-image: url(../img/gui/gas.svg);\n}\n\n.danger-icon{\n background-image: url(../img/gui/danger.svg);\n}\n\n.icon-pulse {\n -webkit-animation: pulse 2s linear infinite;\n animation: pulse 2s linear infinite;\n}\n\n#ui-gas-timer {\n position: relative;\n display: inline-block;\n font-size: 24px;\n text-align: center;\n bottom: 10px;\n left: 2px;\n}\n\n#ui-spec-counter {\n position: absolute;\n color: white;\n width: 68px;\n height: 28px;\n bottom: 218px;\n left: 6px;\n background: rgba(0, 0, 0, 0.4);\n border-radius: 5px;\n}\n\n#ui-spec-counter-icon {\n padding: 6px;\n display: inline-block;\n height: 24px;\n width: 18px;\n margin-left: 2px;\n background-size: 20px;\n background-repeat: no-repeat;\n background-position: 6px 4px;\n background-image: url(../img/gui/eye.svg);\n}\n\n#ui-spec-counter-number {\n position: relative;\n display: inline-block;\n font-size: 20px;\n width: 24px;\n text-align: center;\n bottom: 15px;\n left: 0px;\n}\n\n#ui-settings-container {\n position: relative;\n left: 16px;\n bottom: 12px;\n}\n\n.ui-settings-button {\n position: absolute;\n color: white;\n border-radius: 5px;\n height: 48px;\n width: 48px;\n pointer-events: all;\n opacity: 0.5;\n background: rgba(0, 0, 0, 0.4);\n}\n\n#ui-map-minimize {\n left: 185px;\n}\n\n.ui-settings-button img{\n position: absolute;\n left: 6px;\n top: 6px;\n height: 36px;\n width: 36px;\n background-size: 36px;\n background-repeat: no-repeat;\n transform: scale(1);\n -webkit-transition: all 100ms ease-in;\n -webkit-transform: scale(1);\n -ms-transition: all 100ms ease-in;\n -ms-transform: scale(1);\n -moz-transition: all 100ms ease-in;\n -moz-transform: scale(1);\n transition: all 100ms ease-in;\n transition: opacity .25s ease-out;\n -moz-transition: opacity .25s ease-out;\n -webkit-transition: opacity .25s ease-out;\n -o-transition: opacity .25s ease-out;\n}\n\n.ui-settings-button .map-img-after{\n display: none;\n}\n\n.ui-settings-button:hover {\n opacity: 1;\n -webkit-transition: all 100ms ease-in;\n -webkit-transform: scale(1.1);\n -ms-transition: all 100ms ease-in;\n -ms-transform: scale(1.1);\n -moz-transition: all 100ms ease-in;\n -moz-transform: scale(1.1);\n transition: all 100ms ease-in;\n transform: scale(1.1);\n}\n\n/**\n * ui-bottom-center-0\n */\n\n#ui-bottom-center-0 {\n position: absolute;\n color: #FFF;\n bottom: var(--side-pad);\n left: 50%;\n transform: translateX(-50%);\n}\n\n@media (max-height: 768px), (max-width: 1200px) {\n #ui-bottom-center-0 {\n transform-origin: bottom;\n transform: translateX(-50%) scale(0.85);\n }\n}\n\n#ui-equipped-ammo {\n margin-bottom: 5px;\n text-align: center;\n opacity: 1.0;\n}\n\n#ui-bullet-counter\n{\n display: inline-block;\n width: 175px;\n height: 56px;\n text-align: center;\n text-shadow: 2px 2px #000000;\n}\n\n#ui-bullet-counter #ui-current-clip\n{\n background: rgba(0, 0, 0, 0.4);\n border-radius: 5px;\n font-size: 44px;\n font-weight: bold;\n width: 100px;\n height: 50px;\n transform: translateX(-50%);\n left: 50%;\n position: relative;\n text-align: center;\n}\n\n#ui-bullet-counter #ui-ammo-divider\n{\n font-size: 22px;\n left: 53%;\n position: absolute;\n text-align: center;\n top: 20px;\n}\n\n#ui-bullet-counter #ui-remaining-ammo\n{\n background: rgba(0, 0, 0, 0.4);\n border-radius: 5px;\n font-size: 24px;\n font-weight: bold;\n line-height: 32px;\n width: 65px;\n height: 32px;\n left: 65%;\n position: absolute;\n text-align: center;\n top: 18px;\n}\n\n#ui-boost-counter {\n display: inline-flex;\n width: 412px;\n}\n\n#ui-boost-counter .ui-boost-base {\n background: rgba(0, 0, 0, 0.4);\n height: 10px;\n margin-bottom: 8px;\n}\n\n#ui-boost-counter-0 {\n border-top-left-radius: 3px;\n border-bottom-left-radius: 3px;\n width: 100px;\n margin-right: 3px;\n}\n\n#ui-boost-counter-0 .ui-bar-inner {\n background: rgba(255, 144, 26, 1.0);\n}\n\n#ui-boost-counter-1 {\n width: 100px;\n margin-left: 3px;\n margin-right: 3px;\n}\n\n#ui-boost-counter-1 .ui-bar-inner {\n background: rgba(255, 117, 26, 1.0);\n}\n\n#ui-boost-counter-2 {\n width: 150px;\n margin-left: 3px;\n margin-right: 3px;\n}\n\n#ui-boost-counter-2 .ui-bar-inner {\n background: rgba(255, 102, 22, 1.0);\n}\n\n#ui-boost-counter-3 {\n border-top-right-radius: 3px;\n border-bottom-right-radius: 3px;\n width: 50px;\n margin-left: 3px;\n}\n\n#ui-boost-counter-3 .ui-bar-inner {\n background: rgba(255, 86, 0, 1.0);\n}\n\n.ui-boost-base .ui-bar-inner {\n border-radius: inherit;\n width: 0px;\n height: 10px;\n}\n\n#ui-health-counter {\n background: rgba(0, 0, 0, 0.4);\n border-radius: 5px;\n width: 400px;\n height: 32px;\n padding: 6px;\n}\n\n#ui-health-counter .ui-bar-inner {\n z-index: 1;\n position: absolute;\n border-radius: 5px;\n width: 100%;\n height: 32px;\n transition: width 0.0s;\n transition-property: width;\n transition-duration: 0.0s;\n transition-timing-function: ease-out;\n transition-delay: initial;\n}\n\n#ui-health-container {\n width: 400px;\n position: relative;\n}\n\n#ui-health-counter .ui-bar-danger {\n background: rgba(255, 0, 0, 0.8);\n animation-name: pulse;\n animation-duration: 0.5s;\n animation-timing-function: ease-out;\n animation-delay: 0;\n animation-direction: alternate;\n animation-iteration-count: infinite;\n animation-fill-mode: none;\n animation-play-state: running;\n}\n\n#ui-health-counter #ui-health-depleted {\n z-index: 0;\n background: rgba(255, 255, 255, 1.0);\n transition: width 1.0s;\n transition-property: width;\n transition-duration: 1.0s;\n transition-timing-function: ease-out;\n transition-delay: initial;\n}\n\n.health-bar-pulse {\n -webkit-animation: pulsewhite 1s linear infinite;\n animation: pulsewhite 1s linear infinite;\n}\n\n@-webkit-keyframes pulsewhite {\n 0% {\n background-color: rgba(0, 0, 0, 0.6);\n }\n 50% {\n background-color: rgba(255, 255, 255, 0.6);\n }\n 100% {\n background-color: rgba(0, 0, 0, 0.6);\n }\n}\n\n@keyframes pulsewhite {\n 0% {\n background-color: rgba(0, 0, 0, 0.6);\n }\n 50% {\n background-color: rgba(255, 255, 255, 0.6);\n }\n 100% {\n background-color: rgba(0, 0, 0, 0.6);\n }\n}\n\n@-webkit-keyframes pulse {\n 0% {\n background-color: rgba(0, 0, 0, 0.8);\n }\n 50% {\n background-color: rgba(255, 0, 0, 0.8);\n }\n 100% {\n background-color: rgba(0, 0, 0, 0.8);\n }\n}\n\n@keyframes pulse {\n 0% {\n background-color: rgba(0, 0, 0, 0.8);\n }\n 50% {\n background-color: rgba(255, 0, 0, 0.8);\n }\n 100% {\n background-color: rgba(0, 0, 0, 0.8);\n }\n}\n\n\n/**\n * ui-bottom-center-1\n */\n\n#ui-bottom-center-1 {\n z-index: 3;\n position: absolute;\n color: #FFF;\n bottom: 220px;\n left: 50%;\n transform: translateX(-50%);\n}\n\n@media (max-height: 768px), (max-width: 1200px) {\n #ui-bottom-center-1 {\n transform-origin: bottom;\n transform: translateX(-50%) scale(0.85);\n bottom: 125px;\n }\n}\n\n#ui-kills {\n display: none;\n text-align: center;\n background: rgba(0, 0, 0, 0.4);\n color: #FFF;\n border-radius: 5px;\n padding: 8px;\n}\n\n#ui-kill-text {\n font-size: 18px;\n}\n\n#ui-kill-count {\n font-weight: bold;\n color: rgba(255, 65, 0, 1);\n font-size: 32px;\n text-shadow: 1px 1px 1px rgba(0, 0, 0, 0.3);\n}\n\n/**\n * ui-bottom-center-2\n */\n\n#ui-bottom-center-2 {\n position: absolute;\n color: #FFF;\n bottom: 160px;\n left: 50%;\n transform: translateX(-50%);\n}\n\n#ui-pickup-message {\n color: white;\n opacity: 0;\n text-shadow: 2px 2px 0px rgba(0, 0, 0, 1);\n font-size: 32px;\n font-weight: bold;\n text-align: center;\n width: 100vw;\n}\n\n/**\n * ui-bottom-center-right\n */\n\n#ui-bottom-center-right {\n position: absolute;\n color: #FFF;\n bottom: var(--side-pad);\n left: 75%;\n transform: translateX(-50%);\n}\n\n@media (max-height: 768px), (max-width: 1200px) {\n #ui-bottom-center-right {\n transform: translateX(-50%) scale(0.8);\n }\n}\n\n.ui-armor-counter {\n position: absolute;\n bottom: 0px;\n display: block;\n width: 48px;\n height: 60px;\n background: rgba(0, 0, 0, 0.4);\n border-radius: 5px;\n margin-left: 4px;\n}\n\n#ui-armor-helmet {\n right: 4px;\n}\n\n#ui-armor-backpack {\n left: 60px;\n border: 2px solid transparent;\n}\n\n.ui-armor-level {\n position: relative;\n font-size: 16px;\n font-weight: bold;\n bottom: 24px;\n text-align: center;\n text-shadow: 1px 1px rgba(0, 0, 0, 1.0);\n /*cursor: inherit;*/\n}\n\n.ui-armor-counter-inner {\n z-index: 1;\n position: absolute;\n background: rgba(0, 255, 0, 0.5);\n border-radius: 5px;\n width: 100%;\n height: 0px;\n bottom: 0px;\n transition: height 0.5s;\n transition-property: height;\n transition-duration: 0.5s;\n transition-timing-function: ease-out;\n transition-delay: initial;\n}\n\n.ui-armor-counter .ui-armor-count {\n z-index: 2;\n text-shadow: 2px 2px #000000;\n position: relative;\n font-size: 18px;\n font-weight: bold;\n margin-top: -28px;\n text-align: center;\n}\n\n.ui-armor-counter .ui-armor-image {\n margin: auto;\n left: 0;\n right: 0;\n bottom: 0;\n top: 0;\n z-index: 0;\n position: absolute;\n height: 36px;\n width: 36px;\n}\n\n/**\n * ui-bottom-right\n */\n\n#ui-bottom-right {\n position: absolute;\n color: #FFF;\n bottom: var(--side-pad);\n right: var(--side-pad);\n}\n\n@media (max-height: 768px), (max-width: 1200px) {\n #ui-bottom-right {\n transform-origin: bottom right;\n transform: scale(0.7);\n }\n}\n\n#ui-weapon-container {\n width: 192px;\n}\n\n.ui-weapon-info {\n margin-bottom: 5px;\n border-radius: 5px;\n border: 2px solid transparent;\n}\n\n.ui-weapon-switch {\n position: absolute;\n right: 0px;\n opacity: 0.6;\n border-radius: 5px;\n border: 2px solid transparent;\n width: 160px;\n height: 60px;\n margin-left: auto;\n pointer-events: all;\n cursor: pointer !important;\n}\n\n#ui-weapon-id-1 {\n bottom: 210px;\n}\n\n#ui-weapon-id-2 {\n bottom: 140px;\n}\n\n#ui-weapon-id-3 {\n bottom: 70px;\n}\n\n#ui-weapon-id-4 {\n bottom: 0px;\n}\n\n.ui-weapon-name {\n position: absolute;\n font-size: 18px;\n font-weight: bold;\n right: 8px;\n margin-top: 38px;\n text-align: center;\n}\n\n.ui-weapon-number {\n position: absolute;\n font-size: 24px;\n font-weight: bold;\n right: 8px;\n text-align: center;\n}\n\n.ui-weapon-exp {\n display: none;\n position: absolute;\n height: 32px;\n width: 32px;\n font-size: 18px;\n font-weight: bold;\n line-height: 34px;\n right: 78px;\n margin-top: 26px;\n text-align: center;\n}\n\n.ui-weapon-image {\n display: none;\n position: relative;\n height: 60px;\n width: 60px;\n left: 4px;\n background-size: 60px;\n background-repeat: no-repeat;\n}\n\n#ui-weapon-id-4 .ui-weapon-image{\n height: 52px;\n width: 52px;\n left: 4px;\n top: 4px;\n background-size: 52px;\n}\n\n/**\n * ui-stats, end game screen\n */\n#ui-stats {\n display: none;\n}\n\n#ui-stats-bg {\n display: none;\n opacity: 0;\n position: absolute;\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n background: rgba(0,0,0,0.75);\n pointer-events: none;\n}\n\n#ui-stats-contents {\n position: absolute;\n width: 100%;\n top: 10%;\n left: 50%;\n transform: translateX(-50%);\n text-align: center;\n color: #FFF;\n border-radius: 5px;\n}\n\n#ui-stats-ad-container {\n}\n\n@media (max-height: 768px), (max-width: 1200px) {\n #ui-stats-contents {\n top: 0px;\n }\n}\n\n#ui-stats-header {\n\n}\n\n.ui-stats-header-title {\n font-family: Jura;\n font-weight: bold;\n font-size: 48px;\n margin: 20px;\n color: gold;\n}\n\n.ui-stats-header-reason {\n font-family: Jura;\n font-size: 24px;\n}\n\n.ui-stats-header-overview {\n display: inline;\n margin: 10px;\n}\n\n.ui-stats-header-overview div {\n display: inline;\n padding-bottom: 12px;\n border-bottom: 2px solid rgba(255,255,255,0.25);\n}\n\n.ui-stats-header-overview div:not(:first-child) {\n margin-left: 100px;\n}\n\n.ui-stats-header-overview span {\n font-family: Jura;\n}\n\nspan.ui-stats-header-stat {\n font-size: 32px;\n}\n\nspan.ui-stats-header-value {\n margin-left: 24px;\n font-size: 48px;\n font-weight: bold;\n}\n\n#ui-stats-info-box {\n position: relative;\n left: 50%;\n margin: auto;\n margin-top: 50px;\n min-height: 190px;\n display: flex;\n}\n\n@media (max-height: 768px), (max-width: 1200px) {\n #ui-stats-info-box {\n /*min-height: 225px;*/\n margin-top: 25px;\n }\n}\n\n@media (max-width: 1024px) {\n #ui-stats-info-box {\n transform-origin: left;\n transform: scale(0.85);\n }\n}\n\n.ui-stats-info-player {\n position: relative;\n width: 250px;\n background-color: rgba(0, 0, 0, 0.75);\n border-radius: 4px;\n border: 2px solid black;\n transform: translateX(-50%);\n}\n\n.ui-stats-info-status:after {\n content : "";\n display: block;\n position: absolute;\n top: 15%;\n left: 25%;\n background-image: url(../img/gui/skull.svg);\n background-repeat: no-repeat;\n background-size: 128px;\n width: 100%;\n height: 100%;\n opacity : 0.1;\n z-index: -1;\n}\n\n.ui-stats-info-player-name {\n color: gold;\n font-family: "Arial Narrow", Arial;\n font-size: 24px;\n font-weight: bold;\n font-style: italic;\n margin-top: 8px;\n margin-bottom: 8px;\n margin-left: auto;\n margin-right: auto;\n max-width: 240px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.ui-stats-info {\n display: flex;\n height: 36px;\n margin: auto;\n}\n\n.ui-stats-info > div {\n padding: 8px;\n font-size: 18px;\n line-height: 12px;\n text-align: left;\n font-weight: bold;\n}\n\n.ui-stats-info > div:first-child {\n width: 55%;\n margin-right: 4px;\n text-align: right;\n font-weight: normal;\n}\n\n.ui-stats-reason {\n display: flex;\n height: 72px;\n margin: auto;\n}\n\n.ui-stats-reason div {\n padding: 8px;\n margin: auto;\n width: 100%;\n text-align: center;\n font-size: 16px;\n}\n\n.ui-stats-reason .ui-stats-reason-dead {\n color: red;\n}\n\n.ui-stats-reason .ui-stats-reason-alive {\n color: lawngreen;\n}\n\n#ui-stats-options {\n position: absolute;\n left: 50%;\n margin-top: 20px;\n min-height: 60px;\n z-index: 1;\n}\n\n#ui-stats-restart{\n position: absolute;\n transform: translateX(-50%);\n width: 200px;\n margin: auto;\n margin-bottom: 20px;\n}\n\n#ui-stats-spectate{\n position: absolute;\n transform: translateX(-50%);\n left: 102px;\n width: 125px;\n background: #50afab;\n border-bottom: 2px solid #387c79;\n -webkit-box-shadow: inset 0 -2px #387c79;\n box-shadow: inset 0 -2px #387c79;\n}\n\n#ui-stats-ad-container {\n display: inline-block;\n margin-top: 80px;\n}\n\n#ui-spec-ad-container {\n z-index: 1;\n position: absolute;\n top: 0px;\n left: 50%;\n}\n\n#ad-block-spec-top {\n /*background: black;*/\n}\n\n#ad-block-stats-bottom {\n /*background: black;*/\n}\n\n/* Tooltip container */\n.tooltip {\n position: relative;\n}\n\n/* Tooltip text */\n.tooltip .tooltip-text {\n visibility: hidden;\n width: 240px;\n background-color: black;\n color: #fff;\n text-align: center;\n padding: 5px 0;\n border-radius: 6px;\n position: absolute;\n z-index: 1;\n right: 110%;\n opacity: 0.75;\n top: 50%;\n transform: translateY(-50%);\n}\n\n.tooltip .tooltip-text::after {\n content: " ";\n position: absolute;\n top: 50%;\n left: 100%;\n margin-top: -5px;\n border-width: 5px;\n border-style: solid;\n border-color: transparent transparent transparent black;\n}\n\n.tooltip-title {\n font-size: 18px;\n font-weight: bold;\n padding: 4px;\n color: yellow;\n}\n\n.tooltip-description {\n font-size: 16px;\n padding: 4px;\n}\n\n.tooltip-description span {\n font-size: 16px;\n}\n\n.tooltip:hover .tooltip-text {\n visibility: visible;\n}\n\n/**\n * editor\n */\n#ui-editor {\n\n}\n\n#ui-editor-top-center {\n position: absolute;\n color: #FFF;\n top: 0%;\n left: 50%;\n transform: translateX(-50%);\n}\n\n#ui-editor-top-right {\n position: absolute;\n color: #FFF;\n font-size: 16px;\n top: var(--side-pad);\n right: var(--side-pad);\n}\n\n.ui-editor-header {\n text-align: center;\n font-weight: bold;\n font-size: 16px;\n padding: 8px;\n}\n\n.ui-editor-info {\n background: rgba(0, 0, 0, 0.4);\n border-radius: 5px;\n font-size: 36px;\n margin-bottom: 8px;\n padding: 8px;\n}\n\n.ui-editor-list {\n margin: 0px;\n padding: 0px;\n list-style: none;\n}\n\n.ui-editor-list li div {\n font-family: monospace;\n font-size: 14px;\n}\n\n/*\n * Profiler\n */\n#ui-profiler-top-left {\n position: absolute;\n color: #FFF;\n font-size: 16px;\n top: var(--side-pad);\n left: var(--side-pad);\n text-align: center;\n display: flex;\n}\n\n.ui-profiler-list {\n background: rgba(0, 0, 0, 0.4);\n border-radius: 5px;\n margin-right: 16px;\n padding: 8px;\n}\n\n.ui-profiler-list-header {\n font-size: 16px;\n font-weight: bold;\n margin-bottom: 8px;\n}\n\n.ui-profiler-list ul {\n list-style: none;\n text-align: left;\n padding: 0px;\n margin: 0px;\n}\n\n.ui-profiler-list li {\n display: flex;\n}\n\n.kv {\n font-family: monospace;\n font-size: 14px;\n font-weight: normal;\n}\n\n.kv:last-child {\n width: 100%;\n text-align: right;\n}\n', ""])
},
"85i3": function(e, t, i) {
"use strict";
function a(e, t) {
if (!(e instanceof t))
throw new TypeError("Cannot call a class as a function")
}
var n = function() {
function e(e, t) {
for (var i = 0; i < t.length; i++) {
var a = t[i];
a.enumerable = a.enumerable || !1,
a.configurable = !0,
"value"in a && (a.writable = !0),
Object.defineProperty(e, a.key, a)
}
}
return function(t, i, a) {
return i && e(t.prototype, i),
a && e(t, a),
t
}
}()
, r = i("juYr")
, o = function() {
function e() {
a(this, e),
this.requests = 0,
this.throttle = !1,
this.throttleTimeout = 0
}
return n(e, [{
key: "update",
value: function() {
var e = (new Date).getTime();
this.throttle ? e > this.throttleTimeout && (this.throttle = !1,
this.requests = 0) : this.requests = Math.max(this.requests - 1, 0)
}
}, {
key: "sample",
value: function() {
return Math.random() <= .01
}
}, {
key: "store",
value: function(e, t) {
if (++this.requests > 5)
return this.throttleTimeout = (new Date).getTime() + 18e4,
void (this.throttle = !0);
var i = "https://us-central1-surviv-fa40f.cloudfunctions.net/" + e;
t.key = "AIzaSyCrPuZeAQ2-aXZdTwZNwQJdv4rvsTE-2i8",
r.ajax({
type: "POST",
dataType: "html",
url: i,
data: t,
timeout: 3e3
})
}
}, {
key: "storeGeneric",
value: function(e, t) {
this.sample() && this.store("storeGeneric", {
parent: e,
child: t
})
}
}, {
key: "logWindowOnError",
value: function(e) {
this.store("windowOnerror", {
error: e
})
}
}, {
key: "logError",
value: function(e) {
this.store("errorLog", {
error: e
})
}
}, {
key: "logTest",
value: function(e) {
this.store("testLog", {
error: e
})
}
}, {
key: "logProxy",
value: function(e) {
this.store("onProxy", {
data: e
})
}
}]),
e
}()
, s = new o;
setInterval(function() {
s.update()
}, 1e3),
e.exports = s
},
"8iex": function(e, t, i) {
"use strict";
var a = (i("DlZn"),
i("0od3"))
, n = i("/2+T")
, r = {
circleToAabb: function(e, t) {
var i = n.create(t);
return {
min: n.sub(e, i),
max: n.add(e, i)
}
},
aabbToCircle: function(e, t) {
var i = n.mul(n.sub(t, e), .5);
return {
pos: n.add(e, i),
rad: n.length(i)
}
},
lineSegmentToAabb: function(e, t) {
return {
min: n.create(e.x < t.x ? e.x : t.x, e.y < t.y ? e.y : t.y),
max: n.create(e.x > t.x ? e.x : t.x, e.y > t.y ? e.y : t.y)
}
},
boundingAabb: function(e) {
for (var t = n.create(Number.MAX_VALUE, Number.MAX_VALUE), i = n.create(-Number.MAX_VALUE, -Number.MAX_VALUE), a = 0; a < e.length; a++) {
var r = e[a];
t.x = Math.min(t.x, r.min.x),
t.y = Math.min(t.y, r.min.y),
i.x = Math.max(i.x, r.max.x),
i.y = Math.max(i.y, r.max.y)
}
return {
min: t,
max: i
}
},
testCircleAabb: function(e, t, i, r) {
var o = n.create(a.clamp(e.x, i.x, r.x), a.clamp(e.y, i.y, r.y));
return n.lengthSqr(n.sub(e, o)) < t * t || e.x >= i.x && e.x <= r.x && e.y >= i.y && e.y <= r.y
},
testCircleCircle: function(e, t, i, a) {
var r = t + a;
return n.lengthSqr(n.sub(i, e)) < r * r
},
intersectSegmentCircle: function(e, t, i, a) {
var r = n.sub(t, e)
, o = Math.max(n.length(r), 1e-6);
r = n.div(r, o);
var s = n.sub(e, i)
, l = n.dot(s, r)
, u = n.dot(s, s) - a * a;
if (u > 0 && l > 0)
return null;
var c = l * l - u;
if (c < 0)
return null;
var d = Math.sqrt(c)
, h = -l - d;
if (h < 0 && (h = -l + d),
h <= o) {
var p = n.add(e, n.mul(r, h));
return {
point: p,
normal: n.normalize(n.sub(p, i))
}
}
return null
},
intersectSegmentAabb: function(e, t, i, a) {
var r = 0
, o = Number.MAX_VALUE
, s = e
, l = n.sub(t, e)
, u = n.length(l);
if (l = u > 1e-5 ? n.div(l, u) : n.create(1, 0),
Math.abs(l.x) < 1e-5 && (l.x = 2e-5),
Math.abs(l.y) < 1e-5 && (l.y = 2e-5),
Math.abs(l.x) > 1e-5) {
var c = (i.x - s.x) / l.x
, d = (a.x - s.x) / l.x;
if (r = Math.max(r, Math.min(c, d)),
o = Math.min(o, Math.max(c, d)),
r > o)
return null
}
if (Math.abs(l.y) > 1e-5) {
var h = (i.y - s.y) / l.y
, p = (a.y - s.y) / l.y;
if (r = Math.max(r, Math.min(h, p)),
o = Math.min(o, Math.max(h, p)),
r > o)
return null
}
if (r > u)
return null;
var m = n.add(e, n.mul(l, r))
, g = n.add(i, n.mul(n.sub(a, i), .5))
, f = n.sub(m, g)
, y = n.mul(n.sub(i, a), .5);
return {
point: m,
normal: n.normalizeSafe(n.create(parseInt(f.x / Math.abs(y.x) * 1.001), parseInt(f.y / Math.abs(y.y) * 1.001)), n.create(1, 0))
}
},
intersectRayAabb: function(e, t, i, a) {
Math.abs(t.x) < 1e-5 && (t.x = 2e-5),
Math.abs(t.y) < 1e-5 && (t.y = 2e-5);
var r = n.divElems(n.sub(i, e), t)
, o = n.divElems(n.sub(a, e), t)
, s = n.minElems(r, o)
, l = n.maxElems(r, o)
, u = Math.min(l.x, l.y);
return u >= Math.max(s.x, s.y) ? n.add(e, n.mul(t, u)) : null
},
intersectCircleCircle: function(e, t, i, a) {
var r = t + a
, o = n.sub(i, e)
, s = n.lengthSqr(o);
if (s < r * r) {
var l = Math.sqrt(s);
return o = l > 1e-5 ? n.div(o, l) : n.create(1, 0),
{
dir: o,
pen: r - l
}
}
return null
},
intersectAabbCircle: function(e, t, i, r) {
if (i.x >= e.x && i.x <= t.x && i.y >= e.y && i.y <= t.y) {
var o = n.mul(n.sub(t, e), .5)
, s = n.add(e, o)
, l = n.sub(i, s)
, u = Math.abs(l.x) - o.x - r
, c = Math.abs(l.y) - o.y - r;
return u > c ? {
dir: n.create(l.x > 0 ? 1 : -1, 0),
pen: -u
} : {
dir: n.create(0, l.y > 0 ? 1 : -1),
pen: -c
}
}
var d = n.create(a.clamp(i.x, e.x, t.x), a.clamp(i.y, e.y, t.y))
, h = n.sub(i, d)
, p = n.lengthSqr(h);
if (p < r * r) {
var m = Math.sqrt(p);
return {
dir: m > 1e-4 ? n.div(h, m) : n.create(1, 0),
pen: r - m
}
}
return null
},
intersectAabbAabb: function(e, t, i, a) {
var r = n.mul(n.sub(t, e), .5)
, o = n.add(e, r)
, s = n.mul(n.sub(a, i), .5)
, l = n.add(i, s)
, u = n.sub(l, o)
, c = r.x + s.x - Math.abs(u.x);
if (c > 0) {
var d = r.y + s.y - Math.abs(u.y);
if (d > 0)
return c > d ? {
dir: u.x < 0 ? n.create(-1, 0) : n.create(1, 0),
pen: c
} : {
dir: u.y < 0 ? n.create(0, -1) : n.create(0, 1),
pen: d
}
}
return null
}
};
e.exports = r
},
"8jco": function(e, t, i) {
"use strict";
var a = {
"@metadata": {
"last-updated": "2018-01-28",
locale: "ru"
},
"word-order": "svo",
"index-slogan": "Королевская Битва в 2D",
"index-region": "Регион",
"index-north-america": "Северная Америка",
"index-europe": "Европа",
"index-asia": "Азия",
"index-players": "игроков",
"index-play-solo": "Играть Соло",
"index-play-duo": "Играть в Дуэте",
"index-play-squad": "Играть в Отряд",
"index-create-team": "Создать Команду",
"index-how-to-play": "Как играть",
"index-leave-team": "Покинуть Команду",
"index-joining-team": "Присоединение к Команде",
"index-creating-team": "Создание Команды",
"index-invite-link": "Ссылка-приглашение",
"index-solo": "Соло",
"index-duo": "Дуэт",
"index-squad": "Отряд",
"index-auto-fill": "Автозаполнение",
"index-no-fill": "Не заполнять",
"index-waiting-for-leader": "Ожидание лидера, чтобы начать игру",
"index-play": "Играть",
"index-featured-youtuber": "Рекомендуемые Ютуберы",
"index-settings": "Настройки",
"index-high-resolution": "Высокое разрешение (проверьте, чтобы увеличить качество изображения)",
"index-screen-shake": "Дрожание экрана",
"index-master-volume": "Master Volume",
"index-sfx-volume": "SFX Volume",
"index-music-volume": "Music Volume",
"index-team-is-full": "Команда заполнена!",
"index-failed-joining-team": "Не удалось присоединиться к команде.",
"index-failed-creating-team": "Не удалось создать команду.",
"index-failed-finding-game": "Не удалось найти игру.",
"index-failed-joining-game": "Не удалось присоединиться к игре.",
"index-lost-connection": "Соединение с командой прервалось.",
"index-host-closed": "Соединение с сервером закрыто.",
"index-view-more": "Посмотреть ещё",
"index-back-to-main": "Вернуться в главное меню",
"index-most-kills": "Наибольшее кол-во убийств",
"index-total-kills": "Всего убийств",
"index-total-wins": "Всего побед",
"index-top-5-percent": "Процент Топ 5",
"index-kill-death-ratio": "Соотношение убийство-смерть",
"index-for": "За",
"index-today": "Сегодня",
"index-this-week": "Эту неделю",
"index-all-time": "Всё время",
"index-top-100": "TOP 100",
"index-rank": "Ранг",
"index-player": "Игрок",
"index-total-games": "Всего игр",
"index-controls": "Управление",
"index-movement": "Перемещение",
"index-movement-ctrl": "W, A, S, D",
"index-aim": "Целиться",
"index-aim-ctrl": "Мышь",
"index-punch": "Ударить",
"index-shoot": "Выстрелить",
"index-shoot-ctrl": "Левый Щелчок",
"index-change-weapons": "Сменить Оружие",
"index-change-weapons-ctrl": "1-4 или Колесо Прокрутки",
"index-stow-weapons": "Убрать оружие из рук",
"index-stow-weapons-ctrl": "3 или Е",
"index-swap-weapons": "Смена на Предыдущее Оружие",
"index-swap-weapons-ctrl": "Q",
"index-reload": "Перезарядка",
"index-reload-ctrl": "R",
"index-scope-zoom": "Смена прицела",
"index-scope-zoom-ctrl": "Левый щелчок на Прицел",
"index-pickup": "Подобрать добычу",
"index-loot": "Добычу",
"index-revive": "оживление",
"index-pickup-ctrl": "F",
"index-use-medical": "Медицинский Предмет change on Медикамент",
"index-use-medical-ctrl": "Левый Щелчок на Предмет или цифры от 0-7",
"index-drop-item": "Выкинуть предмет",
"index-drop-item-ctrl": "Правый Щелчок на Предмет",
"index-cancel-action": "Отменить действие",
"index-cancel-action-ctrl": "X",
"index-view-map": "Посмотреть Карту",
"index-view-map-ctrl": "M или G",
"index-toggle-minimap": "Переключить режим просмотра",
"index-toggle-minimap-ctrl": "V",
"index-use-ping": "Использование команд",
"index-use-ping-ctrl": "Удерживая C зажать Правую кнопку мыши и водить мышкой, затем выбрав команду отпустить",
"index-use-emote": "Использование Эмодзи",
"index-use-emote-ctrl": "Зажать Правую кнопку мыши и водить мышкой, затем отпустить Правую кнопку мыши",
"index-tips-1-desc": "Цель surviv.io - остаться последним выжившим. В одном раунде у вас только одна жизнь и нет возможности возродиться.",
"index-tips-2": "PUBG в 2D",
"index-tips-2-desc": "Если вы играли в другие игры жанра Королевской Битвы (такие как PUBG, Fortnite или H1Z1), то вы уже знаете правила. По сути, surviv.io - это двумерный PUBG (только меньше лагает).",
"index-tips-3": "Убивай и добывай",
"index-tips-3-desc": "Вы начнете игру без каких-либо предметов или оружия, у вас есть только простой рюкзак. Передвигайтесь по карте, чтобы найти полезные вещи: оружие, боеприпасы, прицелы и медикаменты. Убивайте других игроков и забирайте себе их вещи!",
"index-tips-4": "Красный - опасный!",
"index-tips-4-desc": "Другие игроки - это не единственное, что может вас ранить. По ходу игры Красная Зона будет надвигаться с краёв карты и наносить всё больше урона, если вы окажетесь в ней. Так что посматривайте на карту и будьте осторожны!",
"game-alive": "В живых",
"game-reloading": "Перезарядка",
"game-using": "Использование",
"game-reviving": "Возрождение",
"game-revive-teammate": "Возродить Союзника",
"game-equip": "Взять",
"game-cancel": "Отмена",
"game-open-door": "Открыть дверь",
"game-close-door": "Закрыть дверь",
"game-You": "Вы",
"game-you": "вы",
"game-themselves": "себя",
"game-yourself": "себя",
"game-you-died": "умерли",
"game-player-died": "Умер",
"game-with": "с помощью",
"game-knocked-out": "Нокаутировал",
"game-killed": "убили",
"game-finally-killed": "наконец убили",
"game-finally-bled-out": "наконец умер",
"game-died-outside": "умер за пределами безопасной зоны",
"game-the-red-zone": "Красная зона",
"game-waiting-for-players": "Ожидание игроков",
"game-spectating": "Наблюдение за",
"game-red-zone-advances": "Красная зона наступит через",
"game-red-zone-advancing": "Красная зона наступает, доберитесь до безопасной зоны!",
"game-seconds": "секунды",
"game-minutes": "минуты",
"game-minute": "минута",
"game-m": "м",
"game-s": "с",
"game-not-enough-space": "Недостаточно места!",
"game-item-already-owned": "Этот предмет уже есть!",
"game-item-already-equipped": "Этот предмет уже экипирован!",
"game-better-item-equipped": "Предмет получше уже есть!",
"game-play-new-game": "Начать Новую Игру",
"game-spectate": "Наблюдать",
"game-full-screen": "Полный экран",
"game-sound": "Звук",
"game-quit-game": "Выйти из Игры",
"game-return-to-game": "Вернуться в Игру",
"game-hide-match-stats": "Скрыть Статистику Матча",
"game-view-match-stats": "Посмотреть Статистику Матча",
"game-previous-teammate": "Предыдущий Напарник",
"game-next-teammate": "Следующий Напарник",
"game-spectate-previous": "",
"game-spectate-next": "",
"game-leave-game": "Покинуть Игру",
"game-your-results": "Твои Результаты",
"game-chicken": "Победа, победа после обеда!",
"game-won-the-game": "выиграл игру.",
"game-team-eliminated": "Ваша команда потерпела поражение.",
"game-rank": "Ранг",
"game-team-rank": "Ранг команды",
"game-team-kills": "Командных убийств",
"game-kill": "Убийство",
"game-kills": "Убийства",
"game-damage-dealt": "Нанесённый Урон",
"game-damage-taken": "Полученный Урон",
"game-survived": "Выжил",
"game-backpack00": "Патронташ",
"game-backpack01": "Маленький Рюкзак",
"game-backpack02": "Обычный Рюкзак",
"game-backpack03": "Военный Рюкзак",
"game-bandage": "Бинт",
"game-bandage-tooltip": "Левый Щелчок, чтобы восстановить 15 здоровья.",
"game-healing-tooltip": "Не востанавливает больше 75 здоровья.",
"game-healthkit": "Аптечка",
"game-healthkit-tooltip": "Левый Щелчок, чтобы восстановить 100 здоровья.",
"game-soda": "Сода",
"game-soda-tooltip": "Левый Щелчок, чтобы увеличить адреналин на 25.",
"game-adrenaline-tooltip": "Адреналин со временем восстанавливает здоровье.",
"game-painkiller": "Таблетки",
"game-painkiller-tooltip": "Левый Щелчок, чтобы увеличить адреналин на 50.",
"game-9mm": "9мм",
"game-9mm-tooltip": "Патроны для M9, Glock, MP5, MAC-10 и UMP9.",
"game-12gauge": "12 калибр",
"game-12gauge-tooltip": "Патроны для M870, Сайга-12 и MP220.",
"game-762mm": "7.62мм",
"game-762mm-tooltip": "Патроны для AK-47, M39, Винтовка Мосина, OT-38 и DP-28.",
"game-556mm": "5.56мм",
"game-556mm-tooltip": "Патроны для FAMAS, HK416, Mk 12 и M249.",
"game-chest01": "Жилет 1-ого уровня",
"game-chest02": "Жилет 2-ого уровня",
"game-chest03": "Жилет 3-ого уровня",
"game-helmet01": "Шлем 1-ого уровня",
"game-helmet02": "Шлем 2-ого уровня",
"game-helmet03": "Шлем 3-ого уровня",
"game-1xscope": "1x Прицел",
"game-2xscope": "2x Прицел",
"game-4xscope": "4x Прицел",
"game-8xscope": "8x Прицел",
"game-15xscope": "15x Прицел",
"game-level-1": "1-й Ур.",
"game-level-2": "2-й Ур.",
"game-level-3": "3-й Ур.",
"game-outfitBase": "Базовая Экипировка",
"game-outfitRoyalFortune": "Королевская удача",
"game-outfitKeyLime": "Лаймовый оттенок",
"game-outfitCobaltShell": "Кобальтовая Оболочка",
"game-outfitCarbonFiber": "Углеродное волокно",
"game-outfitDarkGloves": "Профессионал",
"game-outfitGhillie": "Маскировочный костюм",
"game-outfitCamo": "Лесной камуфляж",
"game-outfitRed": "Мишень",
"game-outfitWhite": "Арктический Мститель",
"game-outfitWoodland": "Боевой камуфляж",
"game-fists": "удар",
"game-ak47": "AK-47",
"game-dp28": "ДП-28",
"game-mosin": "Винтовка Мосина",
"game-m39": "M39 EMR",
"game-mp5": "MP5",
"game-mac10": "MAC-10",
"game-ump9": "UMP9",
"game-m870": "M870",
"game-mp220": "MP220",
"game-saiga": "Сайга-12",
"game-m9": "M9",
"game-glock": "Glock 18C",
"game-ot38": "ОЦ-38",
"game-frag": "Осколочная Граната",
"game-hud-frag": "Осколочная",
"game-smoke": "Дымовая Граната",
"game-hud-smoke": "Дымовая",
"game-barrel_01": "взрывом бочки",
"game-silo_01": "a silo"
};
e.exports = a
},
"9xSA": function(e, t, i) {
"use strict";
var a = (i("DlZn"),
i("8iex"))
, n = (i("0od3"),
i("/2+T"))
, r = {
Type: {
Circle: 0,
Aabb: 1
},
createCircle: function(e, t, i) {
return {
type: r.Type.Circle,
pos: n.copy(e),
rad: t,
height: void 0 !== i ? i : 0
}
},
createAabb: function(e, t, i) {
return {
type: r.Type.Aabb,
min: n.copy(e),
max: n.copy(t),
height: void 0 !== i ? i : 0
}
},
createAabbExtents: function(e, t, i) {
var a = n.sub(e, t)
, o = n.add(e, t);
return r.createAabb(a, o, i)
},
createBounding: function(e) {
if (1 == e.length)
return r.copy(e[0]);
for (var t = [], i = 0, n = 0; n < e.length; n++) {
var o = e[n];
t.push(r.toAabb(o)),
i = Math.max(i, o.height)
}
var s = a.boundingAabb(t);
return r.createAabb(s.min, s.max, i)
},
toAabb: function(e) {
if (e.type == r.Type.Aabb)
return r.createAabb(e.min, e.max, e.height);
var t = a.circleToAabb(e.pos, e.rad);
return r.createAabb(t.min, t.max, e.height)
},
copy: function(e) {
return e.type == r.Type.Circle ? r.createCircle(e.pos, e.rad, e.height) : r.createAabb(e.min, e.max, e.height)
},
transform: function(e, t, i, a) {
if (e.type == r.Type.Aabb) {
for (var o = n.mul(n.sub(e.max, e.min), .5), s = n.add(e.min, o), l = [n.create(s.x - o.x, s.y - o.y), n.create(s.x - o.x, s.y + o.y), n.create(s.x + o.x, s.y - o.y), n.create(s.x + o.x, s.y + o.y)], u = n.create(Number.MAX_VALUE, Number.MAX_VALUE), c = n.create(-Number.MAX_VALUE, -Number.MAX_VALUE), d = 0; d < l.length; d++) {
var h = n.add(n.rotate(n.mul(l[d], a), i), t);
u.x = Math.min(u.x, h.x),
u.y = Math.min(u.y, h.y),
c.x = Math.max(c.x, h.x),
c.y = Math.max(c.y, h.y)
}
return r.createAabb(u, c, e.height)
}
return r.createCircle(n.add(n.rotate(n.mul(e.pos, a), i), t), e.rad * a, e.height)
},
intersectCircle: function(e, t, i) {
return e.type == r.Type.Aabb ? a.intersectAabbCircle(e.min, e.max, t, i) : a.intersectCircleCircle(e.pos, e.rad, t, i)
},
intersectAabb: function(e, t, i) {
return e.type == r.Type.Aabb ? a.intersectAabbAabb(e.min, e.max, t, i) : a.intersectAabbCircle(t, i, e.pos, e.rad)
},
intersectSegment: function(e, t, i) {
return e.type == r.Type.Aabb ? a.intersectSegmentAabb(t, i, e.min, e.max) : a.intersectSegmentCircle(t, i, e.pos, e.rad)
},
intersect: function(e, t) {
return t.type == r.Type.Aabb ? r.intersectAabb(e, t.min, t.max) : r.intersectCircle(e, t.pos, t.rad)
}
};
e.exports = r
},
Bk7F: function(e, t, i) {
"use strict";
function a(e) {
return e % 4 * .5 * Math.PI
}
function n(e) {
var t = x[e];
if ("building" == t.type) {
var i = [];
i = i.concat(t.floor.collision),
i = i.concat(t.ceiling.scopeIn),
i = i.concat(t.ceiling.scopeOut);
for (var r = 0; r < t.mapObjects.length; r++) {
var o = t.mapObjects[r]
, s = o.type;
if ("function" == typeof s && (s = s()),
"" != s) {
var l = a(o.ori)
, u = f.transform(n(s), o.pos, l, o.scale);
i.push(f.toAabb(u))
}
}
var c = g.boundingAabb(i);
return f.createAabb(c.min, c.max)
}
return m(t.collision),
t.collision
}
function r(e) {
var t = [];
for (var i in e)
e.hasOwnProperty(i) && t.push({
type: i,
weight: e[i]
});
m(t.length > 0);
for (var a = 0, n = 0; n < t.length; n++)
a += t[n].weight;
return function() {
for (var e = y.random(0, a), i = 0; e > t[i].weight; )
e -= t[i].weight,
i++;
return t[i].type
}
}
function o(e, t) {
return {
sprite: e,
scale: .5,
alpha: 1,
tint: t || 16777215,
zIdx: 10
}
}
function s(e) {
var t = {
type: "obstacle",
scale: {
createMin: 1,
createMax: 1,
destroy: 1
},
collision: f.createAabbExtents(v.create(0, 0), v.copy(e.extents)),
height: 10,
isWall: !0,
collidable: !0,
destructible: !0,
health: 150,
hitParticle: "woodChip",
explodeParticle: "woodPlank",
reflectBullets: !1,
loot: {
spawn: !1
},
map: {
display: !1
},
img: {},
sound: {
bullet: "wall_bullet",
punch: "wall_bullet",
explode: "barrel_break_01",
enter: "none"
}
};
return m(b[e.material]),
Object.assign({}, t, b[e.material], e.props || {})
}
function l(e) {
return {
type: "obstacle",
scale: {
createMin: 1,
createMax: 1,
destroy: .8
},
collision: f.createCircle(v.create(0, .25), 1.18),
height: .5,
collidable: !0,
destructible: !0,
health: 150,
reflectBullets: !1,
hitParticle: "whiteChip",
explodeParticle: "toiletFrag",
loot: {
spawn: !0,
chance: 1,
min: e.lootMin,
max: e.lootMax,
tier: e.lootTier
},
map: {
display: !1,
color: 11776947,
scale: 1
},
img: {
sprite: e.imgSprite,
residue: "img/map/map-toilet-res.svg",
scale: .5,
alpha: 1,
tint: 16777215,
zIdx: 10
},
sound: {
bullet: "toilet_bullet",
punch: "toilet_bullet",
explode: "toilet_break_01",
enter: "none"
},
terrain: {
grass: !0,
beach: !1
}
}
}
function u(e) {
return {
type: "obstacle",
scale: {
createMin: 1,
createMax: 1,
destroy: .75
},
collision: f.createAabbExtents(v.create(0, .15), v.create(2.5, 1.25)),
height: .5,
collidable: !0,
destructible: !0,
health: 75,
hitParticle: "woodChip",
explodeParticle: "woodPlank",
reflectBullets: !1,
loot: {
spawn: !0,
chance: 1,
min: e.lootMin,
max: e.lootMax,
tier: e.lootTier
},
map: {
display: !1,
color: 6697728,
scale: .875
},
terrain: {
grass: !1,
beach: !0
},
img: {
sprite: e.imgSprite,
residue: "img/map/map-drawers-res.svg",
scale: .5,
alpha: 1,
tint: 16777215,
zIdx: 10
},
sound: {
bullet: "wood_prop_bullet",
punch: "wood_prop_bullet",
explode: "drawers_break_01",
enter: "none"
}
}
}
function c(e) {
return {
type: "obstacle",
scale: {
createMin: 1,
createMax: 1,
destroy: 1
},
collision: f.createAabbExtents(v.create(0, .15), v.create(2.5, 1)),
height: 10,
collidable: !0,
destructible: !0,
health: 20,
hitParticle: e.hitParticle || "barrelChip",
explodeParticle: e.explodeParticle || "depositBoxGreyFrag",
reflectBullets: !0,
loot: {
spawn: !0,
chance: 1,
min: e.lootMin,
max: e.lootMax,
tier: e.lootTier
},
destroyType: e.destroyType || "deposit_box_res_01",
map: {
display: !1,
color: 6697728,
scale: .875
},
terrain: {
grass: !1,
beach: !0
},
img: {
sprite: e.imgSprite,
residue: "img/map/map-drawers-res.svg",
scale: .5,
alpha: 1,
tint: 16777215,
zIdx: 10
},
sound: {
bullet: "wall_bullet",
punch: "metal_punch",
explode: "deposit_box_break_01",
enter: "none"
}
}
}
function d(e) {
var t = {
type: "obstacle",
scale: {
createMin: 1,
createMax: 1,
destroy: 1
},
collision: f.createAabbExtents(e.hinge, e.extents),
height: 10,
collidable: !0,
destructible: !0,
dynamic: !0,
health: 150,
hitParticle: "whiteChip",
explodeParticle: "whitePlank",
reflectBullets: !1,
door: {
interactionRad: 1.75,
openSpeed: 2,
openHeight: .75,
openOneWay: 0,
openDelay: 0,
openOnce: !1,
spriteAnchor: v.create(.5, 1),
sound: {
open: "door_open_01",
close: "door_close_01",
change: ""
}
},
loot: {
spawn: !1
},
img: {
sprite: e.sprite || "img/map/map-door-01.svg",
residue: "none",
scale: .5,
alpha: 1,
tint: e.tint || 14671839,
zIdx: 35
},
sound: {
bullet: "wall_wood_bullet",
punch: "wall_wood_bullet",
explode: "wall_wood_break_01",
enter: "none"
}
};
return m(b[e.material]),
Object.assign({}, t, b[e.material], e.props || {})
}
function h(e) {
return {
type: "obstacle",
scale: {
createMin: 1.05,
createMax: 1.2,
destroy: 1
},
collision: f.createCircle(v.create(0, 0), 1.4),
height: 10,
collidable: !1,
destructible: !0,
health: 100,
hitParticle: "leaf",
explodeParticle: "leaf",
reflectBullets: !1,
isBush: !0,
loot: {
spawn: !1
},
map: {
display: !0,
color: 24320,
scale: 1.5
},
terrain: {
grass: !0,
beach: !1
},
img: {
sprite: e.imgSprite || "img/map/map-bush-01.svg",
residue: e.resSprite || "img/map/map-bush-res-01.svg",
scale: .5,
alpha: .97,
tint: 16777215,
zIdx: 60
},
sound: {
bullet: "bush_bullet",
punch: "bush_bullet",
explode: e.explodeSound || "bush_break_01",
enter: "bush_enter_01"
}
}
}
function p(e) {
var t = [{
type: "container_wall_top",
pos: v.create(0, 7.95),
scale: 1,
ori: 0
}, {
type: "container_wall_side",
pos: v.create(2.35, 2.1),
scale: 1,
ori: 0
}, {
type: "container_wall_side",
pos: v.create(-2.35, 2.1),
scale: 1,
ori: 0
}, {
type: "loot_tier_2",
pos: v.create(0, 3.25),
scale: 1,
ori: 0
}, {
type: r({
loot_tier_1: 2,
"": 1
}),
pos: v.create(0, .05),
scale: 1,
ori: 0
}]
, i = [{
type: "container_wall_side_open",
pos: v.create(2.35, 0),
scale: 1,
ori: 0
}, {
type: "container_wall_side_open",
pos: v.create(-2.35, 0),
scale: 1,
ori: 0
}, {
type: "loot_tier_2",
pos: v.create(0, -.05),
scale: 1,
ori: 0
}, {
type: r({
loot_tier_1: 1,
"": 1
}),
pos: v.create(0, .05),
scale: 1,
ori: 0
}];
return {
type: "building",
map: {
display: !0,
color: e.tint,
scale: 1
},
terrain: {
grass: !0,
beach: !0
},
floor: {
collision: [e.open ? f.createAabbExtents(v.create(0, 0), v.create(2.5, 11)) : f.createAabbExtents(v.create(0, 0), v.create(2.5, 8))],
img: {
sprite: e.open ? "img/map/map-building-container-open-floor.svg" : "img/map/map-building-container-floor.svg",
scale: .5,
alpha: 1,
tint: e.tint
},
surface: "container"
},
ceiling: {
scopeIn: [e.open ? f.createAabbExtents(v.create(0, 0), v.create(2.5, 5.75)) : f.createAabbExtents(v.create(0, 2.25), v.create(2.5, 5.5))],
scopeOut: [e.open ? f.createAabbExtents(v.create(0, 0), v.create(2.5, 11)) : f.createAabbExtents(v.create(0, -.5), v.create(2.5, 8.75))],
img: {
sprite: "img/map/" + e.ceilingSprite,
scale: .5,
alpha: 1,
tint: e.tint
}
},
mapObjects: e.open ? i : t
}
}
var m = i("DlZn")
, g = i("8iex")
, f = i("9xSA")
, y = i("Tf6H")
, v = i("/2+T")
, b = {
metal: {
destructible: !1,
reflectBullets: !0,
hitParticle: "barrelChip",
explodeParticle: "barrelFrag",
sound: {
bullet: "wall_bullet",
punch: "metal_punch",
explode: "barrel_break_01",
enter: "none"
}
},
wood: {
destructible: !0,
reflectBullets: !1,
sound: {
bullet: "wall_wood_bullet",
punch: "wall_wood_bullet",
explode: "wall_break_01",
enter: "none"
}
},
brick: {
destructible: !1,
reflectBullets: !1,
hitParticle: "brickChip",
sound: {
bullet: "wall_brick_bullet",
punch: "wall_brick_bullet",
explode: "wall_break_01",
enter: "none"
}
},
concrete: {
destructible: !1,
reflectBullets: !1,
sound: {
bullet: "wall_brick_bullet",
punch: "wall_brick_bullet",
explode: "wall_break_01",
enter: "none"
}
}
}
, x = {
barrel_01: {
type: "obstacle",
name: "a barrel",
scale: {
createMin: 1,
createMax: 1,
destroy: .6
},
collision: f.createCircle(v.create(0, 0), 1.75),
height: .5,
collidable: !0,
destructible: !0,
explosion: "explosion_barrel",
health: 150,
hitParticle: "barrelChip",
explodeParticle: "barrelFrag",
reflectBullets: !0,
loot: {
spawn: !1
},
map: {
display: !0,
color: 6447714,
scale: 1
},
terrain: {
grass: !0,
beach: !0
},
img: {
sprite: "img/map/map-barrel-01.svg",
scale: .4,
alpha: 1,
tint: 16777215,
zIdx: 10
},
sound: {
bullet: "barrel_bullet",
punch: "barrel_bullet",
explode: "barrel_break_01",
enter: "none"
}
},
bush_01: h({}),
bush_02: h({
resSprite: "img/map/map-bush-res-02.svg"
}),
chest_01: {
type: "obstacle",
scale: {
createMin: 1,
createMax: 1,
destroy: .75
},
collision: f.createAabbExtents(v.create(0, 0), v.create(2.25, 1.6)),
height: .5,
collidable: !0,
destructible: !0,
health: 150,
hitParticle: "woodChip",
explodeParticle: "woodPlank",
reflectBullets: !1,
loot: {
spawn: !0,
chance: 1,
min: 3,
max: 4,
tier: "tier_chest"
},
map: {
display: !1,
color: 6697728,
scale: .875
},
terrain: {
grass: !1,
beach: !0
},
img: {
sprite: "img/map/map-chest-01.svg",
residue: "img/map/map-crate-res.svg",
scale: .5,
alpha: 1,
tint: 16777215,
zIdx: 10
},
sound: {
bullet: "wood_crate_bullet",
punch: "wood_crate_bullet",
explode: "crate_break_01",
enter: "none"
}
},
crate_01: {
type: "obstacle",
scale: {
createMin: 1,
createMax: 1,
destroy: .5
},
collision: f.createAabbExtents(v.create(0, 0), v.create(2.25, 2.25)),
height: .5,
collidable: !0,
destructible: !0,
health: 75,
hitParticle: "woodChip",
explodeParticle: "woodPlank",
reflectBullets: !1,
loot: {
spawn: !0,
chance: 1,
min: 1,
max: 1,
tier: "tier_world"
},
map: {
display: !0,
color: 6697728,
scale: .875
},
terrain: {
grass: !0,
beach: !0
},
img: {
sprite: "img/map/map-crate-01.svg",
residue: "img/map/map-crate-res.svg",
scale: .5,
alpha: 1,
tint: 16777215,
zIdx: 10
},
sound: {
bullet: "wood_crate_bullet",
punch: "wood_crate_bullet",
explode: "crate_break_02",
enter: "none"
}
},
crate_02: {
type: "obstacle",
scale: {
createMin: 1,
createMax: 1,
destroy: .5
},
collision: f.createAabbExtents(v.create(0, 0), v.create(2.25, 2.25)),
height: .5,
collidable: !0,
destructible: !0,
health: 150,
hitParticle: "woodChip",
explodeParticle: "woodPlank",
reflectBullets: !1,
loot: {
spawn: !0,
chance: 1,
min: 3,
max: 5,
tier: "tier_soviet"
},
map: {
display: !1,
color: 16777215,
scale: .875
},
terrain: {
grass: !0,
beach: !1
},
img: {
sprite: "img/map/map-crate-02.svg",
residue: "img/map/map-crate-res.svg",
scale: .5,
alpha: 1,
tint: 16777215,
zIdx: 10
},
sound: {
bullet: "wood_crate_bullet",
punch: "wood_crate_bullet",
explode: "crate_break_01",
enter: "none"
}
},
crate_03: {
name: "Grenade Box",
type: "obstacle",
scale: {
createMin: 1,
createMax: 1,
destroy: .75
},
collision: f.createAabbExtents(v.create(0, 0), v.create(1.575, 1.575)),
height: .5,
collidable: !0,
destructible: !0,
health: 100,
hitParticle: "woodChip",
explodeParticle: "woodPlank",
reflectBullets: !1,
loot: {
spawn: !0,
chance: 1,
min: 2,
max: 4,
tier: "tier_throwables"
},
map: {
display: !0,
color: 5066014,
scale: .875
},
terrain: {
grass: !0,
beach: !0
},
img: {
sprite: "img/map/map-crate-03.svg",
residue: "img/map/map-crate-res.svg",
scale: .35,
alpha: 1,
tint: 16777215,
zIdx: 10
},
sound: {
bullet: "wood_crate_bullet",
punch: "wood_crate_bullet",
explode: "crate_break_01",
enter: "none"
}
},
crate_04: {
type: "obstacle",
scale: {
createMin: 1,
createMax: 1,
destroy: .5
},
collision: f.createAabbExtents(v.create(0, 0), v.create(2.25, 2.25)),
height: .5,
collidable: !0,
destructible: !1,
health: 150,
hitParticle: "greenChip",
explodeParticle: "barrelFrag",
reflectBullets: !1,
loot: {
spawn: !1
},
map: {
display: !1,
color: 16777215,
scale: 1.75
},
img: {
sprite: "img/map/map-crate-04.svg",
scale: .5,
alpha: 1,
tint: 16777215,
zIdx: 10
},
sound: {
bullet: "ammo_crate_bullet",
punch: "ammo_crate_bullet",
explode: "crate_break_02",
enter: "none"
}
},
crate_05: {
type: "obstacle",
scale: {
createMin: 1,
createMax: 1,
destroy: .5
},
collision: f.createAabbExtents(v.create(0, 0), v.create(2, 2)),
height: .5,
collidable: !0,
destructible: !1,
health: 150,
hitParticle: "goldChip",
explodeParticle: "barrelFrag",
reflectBullets: !1,
loot: {
spawn: !1
},
map: {
display: !1,
color: 16777215,
scale: 1.75
},
img: {
sprite: "img/map/map-crate-05.svg",
scale: .5,
alpha: 1,
tint: 16777215,
zIdx: 10
},
sound: {
bullet: "wall_brick_bullet",
punch: "wall_brick_bullet",
explode: "crate_break_02",
enter: "none"
}
},
deposit_box_01: c({
imgSprite: "img/map/map-deposit-box-01.svg",
lootTier: "tier_world",
lootMin: 1,
lootMax: 1
}),
deposit_box_02: c({
imgSprite: "img/map/map-deposit-box-02.svg",
explodeParticle: "depositBoxGoldFrag",
lootTier: "tier_soviet",
lootMin: 2,
lootMax: 3
}),
deposit_box_res_01: function(e) {
return {
type: "obstacle",
scale: {
createMin: 1,
createMax: 1,
destroy: 1
},
collision: f.createAabbExtents(v.create(0, .15), v.create(2.5, 1)),
height: 10,
collidable: !0,
destructible: !1,
health: 750,
hitParticle: "barrelChip",
explodeParticle: "barrelFrag",
reflectBullets: !0,
loot: {
spawn: !0,
chance: 1,
min: e.lootMin,
max: e.lootMax,
tier: e.lootTier
},
map: {
display: !1,
color: 6697728,
scale: .875
},
terrain: {
grass: !1,
beach: !0
},
img: {
sprite: e.imgSprite,
residue: "none",
scale: .5,
alpha: 1,
tint: 16777215,
zIdx: 10
},
sound: {
bullet: "wall_bullet",
punch: "metal_punch",
explode: "barrel_break_01",
enter: "none"
}
}
}({
imgSprite: "none",
lootTier: "tier_container",
lootMin: 1,
lootMax: 1
}),
drawers_01: u({
imgSprite: "img/map/map-drawers-01.svg",
lootTier: "tier_container",
lootMin: 1,
lootMax: 1
}),
drawers_02: u({
imgSprite: "img/map/map-drawers-02.svg",
lootTier: "tier_soviet",
lootMin: 2,
lootMax: 3
}),
oven_01: {
type: "obstacle",
name: "an oven",
scale: {
createMin: 1,
createMax: 1,
destroy: .75
},
collision: f.createAabbExtents(v.create(0, .15), v.create(1.7, 1.3)),
height: .5,
collidable: !0,
destructible: !0,
explosion: "explosion_barrel",
health: 200,
hitParticle: "barrelChip",
explodeParticle: "barrelFrag",
reflectBullets: !0,
loot: {
spawn: !1
},
map: {
display: !1,
color: 6697728,
scale: .875
},
terrain: {
grass: !1,
beach: !0
},
img: {
sprite: "img/map/map-oven-01.svg",
scale: .5,
alpha: 1,
tint: 16777215,
zIdx: 10
},
sound: {
bullet: "barrel_bullet",
punch: "barrel_bullet",
explode: "oven_break_01",
enter: "none"
}
},
refrigerator_01: {
type: "obstacle",
scale: {
createMin: 1,
createMax: 1,
destroy: .75
},
collision: f.createAabbExtents(v.create(0, .15), v.create(1.7, 1.25)),
height: .5,
collidable: !0,
destructible: !1,
health: 100,
hitParticle: "redChip",
explodeParticle: "woodPlank",
reflectBullets: !0,
loot: {
spawn: !1
},
map: {
display: !1,
color: 6697728,
scale: .875
},
terrain: {
grass: !1,
beach: !0
},
img: {
sprite: "img/map/map-refrigerator-01.svg",
residue: "img/map/map-crate-res.svg",
scale: .5,
alpha: 1,
tint: 16777215,
zIdx: 10
},
sound: {
bullet: "wall_bullet",
punch: "metal_punch",
explode: "barrel_break_01",
enter: "none"
}
},
silo_01: {
type: "obstacle",
scale: {
createMin: 1,
createMax: 1,
destroy: 1
},
collision: f.createCircle(v.create(0, 0), 7.75),
height: 10,
collidable: !0,
destructible: !1,
health: 300,
hitParticle: "barrelChip",
explodeParticle: "barrelFrag",
reflectBullets: !0,
loot: {
spawn: !1
},
map: {
display: !0,
color: 4079166,
scale: 1
},
terrain: {
grass: !0,
beach: !1
},
img: {
sprite: "img/map/map-silo-01.svg",
scale: .5,
alpha: 1,
tint: 16777215,
zIdx: 10
},
sound: {
bullet: "silo_bullet",
punch: "silo_bullet",
explode: "barrel_break_01",
enter: "none"
}
},
stand_01: {
type: "obstacle",
scale: {
createMin: 1,
createMax: 1,
destroy: .75
},
collision: f.createAabbExtents(v.create(0, .15), v.create(1.25, 1.25)),
height: .5,
collidable: !0,
destructible: !0,
health: 75,
hitParticle: "woodChip",
explodeParticle: "woodPlank",
reflectBullets: !1,
loot: {
spawn: !0,
chance: 1,
min: 1,
max: 1,
tier: "tier_world"
},
map: {
display: !1,
color: 6697728,
scale: .875
},
terrain: {
grass: !1,
beach: !0
},
img: {
sprite: "img/map/map-stand-01.svg",
residue: "img/map/map-drawers-res.svg",
scale: .5,
alpha: 1,
tint: 16777215,
zIdx: 10
},
sound: {
bullet: "wood_prop_bullet",
punch: "wood_prop_bullet",
explode: "drawers_break_01",
enter: "none"
}
},
stone_01: {
type: "obstacle",
scale: {
createMin: 1,
createMax: 1.2,
destroy: .5
},
collision: f.createCircle(v.create(0, 0), 1.6),
height: .5,
collidable: !0,
destructible: !0,
health: 250,
reflectBullets: !1,
hitParticle: "rockChip",
explodeParticle: "rockFrag",
loot: {
spawn: !1
},
map: {
display: !0,
color: 11776947,
scale: 1
},
terrain: {
grass: !0,
beach: !1
},
img: {
sprite: "img/map/map-stone-01.svg",
residue: "img/map/map-stone-res.svg",
scale: .4,
alpha: 1,
tint: 16777215,
zIdx: 10
},
sound: {
bullet: "stone_bullet",
punch: "stone_bullet",
explode: "stone_break_01",
enter: "none"
}
},
table_01: {
type: "obstacle",
scale: {
createMin: 1,
createMax: 1,
destroy: .75
},
collision: f.createAabbExtents(v.create(0, 0), v.create(2.5, 2)),
height: .5,
collidable: !1,
destructible: !0,
health: 100,
hitParticle: "woodChip",
explodeParticle: "woodPlank",
reflectBullets: !1,
loot: {
spawn: !1
},
map: {
display: !1,
color: 6697728,
scale: .875
},
terrain: {
grass: !1,
beach: !0
},
img: {
sprite: "img/map/map-table-01.svg",
residue: "img/map/map-table-res.svg",
scale: .5,
alpha: 1,
tint: 16777215,
zIdx: 60
},
sound: {
bullet: "wood_prop_bullet",
punch: "wood_prop_bullet",
explode: "crate_break_01",
enter: "none"
}
},
toilet_01: l({
imgSprite: "img/map/map-toilet-01.svg",
lootTier: "tier_toilet",
lootMin: 2,
lootMax: 3
}),
toilet_02: l({
imgSprite: "img/map/map-toilet-02.svg",
lootTier: "tier_soviet",
lootMin: 3,
lootMax: 4
}),
tree_01: {
type: "obstacle",
scale: {
createMin: .8,
createMax: 1,
destroy: .5
},
collision: f.createCircle(v.create(0, 0), 1.55),
height: 10,
collidable: !0,
destructible: !0,
health: 175,
hitParticle: "woodChip",
explodeParticle: "woodLog",
reflectBullets: !1,
loot: {
spawn: !1
},
map: {
display: !0,
color: 4083758,
scale: 2.5
},
terrain: {
grass: !0,
beach: !1
},
img: {
sprite: "img/map/map-tree-03.svg",
residue: "img/map/map-tree-res.svg",
scale: .7,
alpha: 1,
tint: 16777215,
zIdx: 200
},
sound: {
bullet: "tree_bullet",
punch: "tree_bullet",
explode: "tree_break_01",
enter: "none"
}
},
tree_02: {
type: "obstacle",
scale: {
createMin: .8,
createMax: 1,
destroy: .5
},
collision: f.createCircle(v.create(0, 0), 4.4),
height: 10,
collidable: !0,
destructible: !1,
health: 100,
hitParticle: "woodChip",
explodeParticle: "woodLog",
reflectBullets: !1,
loot: {
spawn: !1
},
map: {
display: !0,
color: 4083758,
scale: 2.25
},
img: {
sprite: "img/map/map-tree-03.svg",
residue: "img/map/map-tree-res.svg",
scale: 1,
alpha: 1,
tint: 16777215,
zIdx: 230
},
sound: {
bullet: "tree_bullet",
punch: "tree_bullet",
explode: "tree_break_01",
enter: "none"
}
},
bank_window_01: {
type: "obstacle",
scale: {
createMin: 1,
createMax: 1,
destroy: 1
},
collision: f.createAabbExtents(v.create(0, 0), v.create(.4, 2)),
height: 10,
collidable: !0,
destructible: !0,
isWindow: !0,
health: 75,
hitParticle: "glassChip",
explodeParticle: ["windowFrag", "redPlank"],
reflectBullets: !1,
loot: {
spawn: !1
},
img: {
sprite: "img/map/map-building-bank-window-01.svg",
residue: "img/map/map-building-bank-window-res-01.svg",
scale: .5,
alpha: 1,
tint: 16777215,
zIdx: 10
},
sound: {
bullet: "glass_bullet",
punch: "glass_bullet",
explode: "window_break_02",
enter: "none"
}
},
house_door_01: d({
material: "wood",
hinge: v.create(0, 2),
extents: v.create(.3, 2)
}),
house_door_02: d({
material: "metal",
hinge: v.create(0, 2),
extents: v.create(.3, 2),
tint: 4934475
}),
house_window_01: {
type: "obstacle",
scale: {
createMin: 1,
createMax: 1,
destroy: 1
},
collision: f.createAabbExtents(v.create(0, 0), v.create(.4, 2)),
height: 10,
collidable: !0,
destructible: !0,
isWindow: !0,
health: 1,
hitParticle: "glassChip",
explodeParticle: "windowFrag",
reflectBullets: !1,
loot: {
spawn: !1
},
destroyType: "house_window_broken_01",
img: {
sprite: "img/map/map-building-house-window-01.svg",
residue: "none",
scale: .5,
alpha: 1,
tint: 16777215,
zIdx: 10
},
sound: {
bullet: "glass_bullet",
punch: "glass_bullet",
explode: "window_break_01",
enter: "none"
}
},
house_window_broken_01: {
type: "obstacle",
scale: {
createMin: 1,
createMax: 1,
destroy: 1
},
collision: f.createAabbExtents(v.create(0, 0), v.create(.4, 2)),
height: .2,
collidable: !0,
destructible: !1,
health: 100,
hitParticle: "woodChip",
explodeParticle: "woodPlank",
reflectBullets: !1,
loot: {
spawn: !1
},
img: {
sprite: "img/map/map-building-house-window-res-01.svg",
scale: .5,
alpha: 1,
tint: 16777215,
zIdx: 10
},
sound: {
bullet: "wall_wood_bullet",
punch: "wall_wood_bullet",
explode: "wall_wood_break_01",
enter: "none"
}
},
hedgehog_wall: s({
material: "metal",
extents: v.create(3, .5),
props: {
height: .5,
map: {
display: !0,
color: 5854285,
scale: 1
}
}
}),
hedgehog_01: {
type: "building",
map: {
display: !1,
color: 6707790,
scale: 1
},
terrain: {
grass: !1,
beach: !0
},
floor: {
collision: [f.createAabbExtents(v.create(0, 0), v.create(3, 3))],
img: {
sprite: "img/map/map-hedgehog-01.svg",
scale: .5,
alpha: 1,
tint: 16777215
},
surface: "grass"
},
ceiling: {
scopeIn: [f.createAabbExtents(v.create(0, 0), v.create(0, 0))],
scopeOut: [f.createAabbExtents(v.create(0, 0), v.create(0, 0))],
img: {
sprite: "none",
scale: .5,
alpha: 0,
tint: 16777215
}
},
mapObjects: [{
type: "hedgehog_wall",
pos: v.create(0, 0),
scale: 1,
ori: 1
}, {
type: "hedgehog_wall",
pos: v.create(0, 0),
scale: 1,
ori: 0
}]
},
warehouse_wall_side: s({
material: "metal",
extents: v.create(25, .6)
}),
warehouse_wall_edge: s({
material: "metal",
extents: v.create(.6, 3.2)
}),
warehouse_01: {
type: "building",
map: {
display: !0,
shapes: [{
collider: f.createAabbExtents(v.create(27, 0), v.create(3, 12.25)),
color: 10066329
}, {
collider: f.createAabbExtents(v.create(-27, 0), v.create(3, 12.25)),
color: 10066329
}, {
collider: f.createAabbExtents(v.create(0, 0), v.create(24.5, 12.25)),
color: 5915450
}]
},
terrain: {
grass: !0,
beach: !1
},
floor: {
collision: [f.createAabbExtents(v.create(0, 0), v.create(32, 12.5))],
img: {
sprite: "img/map/map-building-warehouse-floor.svg",
scale: .5,
alpha: 1,
tint: 16777215
},
surface: "warehouse"
},
ceiling: {
scopeIn: [f.createAabbExtents(v.create(0, 0), v.create(24.5, 12.25))],
scopeOut: [f.createAabbExtents(v.create(0, 0), v.create(32, 12.5))],
vision: {
dist: 8,
width: 5
},
img: {
sprite: "img/map/map-building-warehouse-ceiling.svg",
scale: .5,
alpha: 1,
tint: 16777215
}
},
mapObjects: [{
type: "warehouse_wall_side",
pos: v.create(0, 11.9),
scale: 1,
ori: 0
}, {
type: "warehouse_wall_edge",
pos: v.create(-24.4, 8.2),
scale: 1,
ori: 0
}, {
type: "warehouse_wall_edge",
pos: v.create(24.4, 8.2),
scale: 1,
ori: 0
}, {
type: "warehouse_wall_side",
pos: v.create(0, -11.9),
scale: 1,
ori: 0
}, {
type: "warehouse_wall_edge",
pos: v.create(-24.4, -8.2),
scale: 1,
ori: 0
}, {
type: "warehouse_wall_edge",
pos: v.create(24.4, -8.2),
scale: 1,
ori: 0
}, {
type: "crate_01",
pos: v.create(-21.25, 8.75),
scale: 1,
ori: 0,
inheritOri: !1
}, {
type: "crate_04",
pos: v.create(-16.25, 8.75),
scale: 1,
ori: 1
}, {
type: "crate_01",
pos: v.create(-21.25, -8.75),
scale: 1,
ori: 0,
inheritOri: !1
}, {
type: "barrel_01",
pos: v.create(-16.5, -8.75),
scale: .9,
ori: 0
}, {
type: "crate_01",
pos: v.create(21.25, 8.75),
scale: 1,
ori: 0,
inheritOri: !1
}, {
type: "barrel_01",
pos: v.create(16.5, 8.75),
scale: .9,
ori: 0
}, {
type: "crate_04",
pos: v.create(16.25, -8.75),
scale: 1,
ori: 1
}, {
type: "crate_01",
pos: v.create(21.25, -8.75),
scale: 1,
ori: 0,
inheritOri: !1
}, {
type: r({
crate_02: 1,
crate_01: 3
}),
pos: v.create(0, 0),
scale: 1,
ori: 0,
inheritOri: !1
}, {
type: "crate_01",
pos: v.create(5, 0),
scale: 1,
ori: 0,
inheritOri: !1
}, {
type: "crate_01",
pos: v.create(-5, 0),
scale: 1,
ori: 0,
inheritOri: !1
}, {
type: "crate_04",
pos: v.create(0, 5),
scale: 1,
ori: 0
}, {
type: "crate_04",
pos: v.create(0, -5),
scale: 1,
ori: 0
}]
},
shack_wall_top: s({
material: "wood",
extents: v.create(5.6, .35),
height: 10,
props: {
img: o("img/map/map-wall-shack-top.svg")
}
}),
shack_wall_side_left: s({
material: "wood",
extents: v.create(.35, 3.43),
height: 10,
props: {
img: o("img/map/map-wall-shack-left.svg")
}
}),
shack_wall_side_right: s({
material: "wood",
extents: v.create(.35, 3.8),
height: 10,
props: {
img: o("img/map/map-wall-shack-right.svg")
}
}),
shack_wall_bot: s({
material: "wood",
extents: v.create(3.75, .35),
height: 10,
props: {
img: o("img/map/map-wall-shack-bot.svg")
}
}),
shack_01: {
type: "building",
map: {
display: !0,
color: 6707790,
scale: 1
},
terrain: {
grass: !0,
beach: !1
},
floor: {
collision: [f.createAabbExtents(v.create(0, .9), v.create(5.6, 3.5))],
img: {
sprite: "img/map/map-building-shack-floor.svg",
scale: .5,
alpha: 1,
tint: 16777215
},
surface: "shack"
},
ceiling: {
scopeIn: [f.createAabbExtents(v.create(0, .9), v.create(5.6, 3.5))],
scopeOut: [f.createAabbExtents(v.create(0, .8), v.create(5.9, 3.8))],
vision: {
width: 4
},
img: {
sprite: "img/map/map-building-shack-ceiling.svg",
scale: .5,
alpha: 1,
tint: 16777215
},
destroy: {
wallCount: 2,
particle: "shackFrag",
particleCount: 25,
residue: "img/map/map-shack-res.svg"
}
},
mapObjects: [{
type: "shack_wall_bot",
pos: v.create(-1.49, -2.4),
scale: 1,
ori: 0
}, {
type: "shack_wall_side_left",
pos: v.create(-5.55, .69),
scale: 1,
ori: 0
}, {
type: "shack_wall_top",
pos: v.create(-.3, 4.33),
scale: 1,
ori: 0
}, {
type: "shack_wall_side_right",
pos: v.create(5.55, .95),
scale: 1,
ori: 0
}, {
type: "crate_01",
pos: v.create(7.9, 2.85),
scale: .8,
ori: 0,
inheritOri: !1
}, {
type: "barrel_01",
pos: v.create(7.45, -.9),
scale: .85,
ori: 0
}, {
type: r({
loot_tier_2: 1
}),
pos: v.create(-2, .8),
scale: 1,
ori: 0
}, {
type: r({
loot_tier_1: 1,
"": 1
}),
pos: v.create(2, .8),
scale: 1,
ori: 0
}]
},
outhouse_wall_top: s({
material: "wood",
extents: v.create(3.2, .35),
props: {
height: 10,
hitParticle: "outhouseChip",
explodeParticle: "outhousePlank",
health: 100,
img: o("img/map/map-wall-outhouse-top.svg")
}
}),
outhouse_wall_side: s({
material: "wood",
extents: v.create(.35, 3.1),
props: {
height: 10,
hitParticle: "outhouseChip",
explodeParticle: "outhousePlank",
health: 100,
img: o("img/map/map-wall-outhouse-side.svg")
}
}),
outhouse_wall_bot: s({
material: "wood",
extents: v.create(1.15, .35),
props: {
height: 10,
hitParticle: "outhouseChip",
explodeParticle: "outhousePlank",
health: 100,
img: o("img/map/map-wall-outhouse-bot.svg")
}
}),
outhouse_01: {
type: "building",
map: {
display: !0,
color: 8145976,
scale: 1
},
terrain: {
grass: !0,
beach: !1
},
floor: {
collision: [f.createAabbExtents(v.create(0, 0), v.create(3.8, 5))],
img: {
sprite: "img/map/map-building-outhouse-floor.svg",
scale: .5,
alpha: 1,
tint: 16777215
},
surface: "shack"
},
ceiling: {
scopeIn: [f.createAabbExtents(v.create(0, 1.45), v.create(3.6, 3.2))],
scopeOut: [f.createAabbExtents(v.create(0, 1.4), v.create(3.8, 3.4))],
img: {
sprite: "img/map/map-building-outhouse-ceiling.svg",
scale: .5,
alpha: 1,
tint: 16777215
},
destroy: {
wallCount: 2,
particleCount: 15,
particle: "outhouseFrag",
residue: "img/map/map-outhouse-res.svg"
}
},
mapObjects: [{
type: "outhouse_wall_top",
pos: v.create(0, 4.46),
scale: 1,
ori: 0
}, {
type: "outhouse_wall_side",
pos: v.create(3.4, 1.73),
scale: 1,
ori: 0
}, {
type: "outhouse_wall_side",
pos: v.create(-3.4, 1.73),
scale: 1,
ori: 0
}, {
type: "outhouse_wall_bot",
pos: v.create(-2.65, -1.52),
scale: 1,
ori: 0
}, {
type: "outhouse_wall_bot",
pos: v.create(2.65, -1.52),
scale: 1,
ori: 0
}, {
type: r({
toilet_01: 5,
toilet_02: 1
}),
pos: v.create(0, 2),
scale: .95,
ori: 0
}]
},
brick_wall_ext_1: s({
material: "brick",
extents: v.create(.5, .5)
}),
brick_wall_ext_2: s({
material: "brick",
extents: v.create(.5, 1)
}),
brick_wall_ext_3: s({
material: "brick",
extents: v.create(.5, 1.5)
}),
brick_wall_ext_4: s({
material: "brick",
extents: v.create(.5, 2)
}),
brick_wall_ext_5: s({
material: "brick",
extents: v.create(.5, 2.5)
}),
brick_wall_ext_6: s({
material: "brick",
extents: v.create(.5, 3)
}),
brick_wall_ext_7: s({
material: "brick",
extents: v.create(.5, 3.5)
}),
brick_wall_ext_8: s({
material: "brick",
extents: v.create(.5, 4)
}),
brick_wall_ext_9: s({
material: "brick",
extents: v.create(.5, 4.5)
}),
brick_wall_ext_10: s({
material: "brick",
extents: v.create(.5, 5)
}),
brick_wall_ext_11: s({
material: "brick",
extents: v.create(.5, 5.5)
}),
brick_wall_ext_12: s({
material: "brick",
extents: v.create(.5, 6)
}),
brick_wall_ext_13: s({
material: "brick",
extents: v.create(.5, 6.5)
}),
brick_wall_ext_14: s({
material: "brick",
extents: v.create(.5, 7)
}),
brick_wall_ext_15: s({
material: "brick",
extents: v.create(.5, 7.5)
}),
brick_wall_ext_16: s({
material: "brick",
extents: v.create(.5, 8)
}),
brick_wall_ext_17: s({
material: "brick",
extents: v.create(.5, 8.5)
}),
brick_wall_ext_18: s({
material: "brick",
extents: v.create(.5, 9)
}),
brick_wall_ext_19: s({
material: "brick",
extents: v.create(.5, 9.5)
}),
brick_wall_ext_20: s({
material: "brick",
extents: v.create(.5, 10)
}),
brick_wall_ext_21: s({
material: "brick",
extents: v.create(.5, 10.5)
}),
brick_wall_ext_22: s({
material: "brick",
extents: v.create(.5, 11)
}),
brick_wall_ext_23: s({
material: "brick",
extents: v.create(.5, 11.5)
}),
metal_wall_ext_1: s({
material: "metal",
extents: v.create(.5, .5)
}),
metal_wall_ext_2: s({
material: "metal",
extents: v.create(.5, 1)
}),
metal_wall_ext_3: s({
material: "metal",
extents: v.create(.5, 1.5)
}),
metal_wall_ext_4: s({
material: "metal",
extents: v.create(.5, 2)
}),
metal_wall_ext_5: s({
material: "metal",
extents: v.create(.5, 2.5)
}),
metal_wall_ext_6: s({
material: "metal",
extents: v.create(.5, 3)
}),
metal_wall_ext_7: s({
material: "metal",
extents: v.create(.5, 3.5)
}),
metal_wall_ext_8: s({
material: "metal",
extents: v.create(.5, 4)
}),
metal_wall_ext_9: s({
material: "metal",
extents: v.create(.5, 4.5)
}),
metal_wall_ext_10: s({
material: "metal",
extents: v.create(.5, 5)
}),
metal_wall_ext_11: s({
material: "metal",
extents: v.create(.5, 5.5)
}),
metal_wall_ext_12: s({
material: "metal",
extents: v.create(.5, 6)
}),
metal_wall_ext_13: s({
material: "metal",
extents: v.create(.5, 6.5)
}),
metal_wall_ext_14: s({
material: "metal",
extents: v.create(.5, 7)
}),
metal_wall_ext_15: s({
material: "metal",
extents: v.create(.5, 7.5)
}),
metal_wall_ext_16: s({
material: "metal",
extents: v.create(.5, 8)
}),
metal_wall_ext_17: s({
material: "metal",
extents: v.create(.5, 8.5)
}),
metal_wall_ext_18: s({
material: "metal",
extents: v.create(.5, 9)
}),
metal_wall_ext_19: s({
material: "metal",
extents: v.create(.5, 9.5)
}),
metal_wall_ext_thick_3: s({
material: "metal",
extents: v.create(1, 1.5)
}),
metal_wall_ext_thick_5: s({
material: "metal",
extents: v.create(1, 2.5)
}),
panicroom_01: {
type: "building",
map: {
display: !1,
color: 6707790,
scale: 1
},
terrain: {
grass: !0,
beach: !1
},
zIdx: 1,
floor: {
collision: [f.createAabbExtents(v.create(0, 0), v.create(4.5, 6))],
img: {
sprite: "img/map/map-building-panicroom-floor.svg",
scale: .5,
alpha: 1,
tint: 6250335
},
surface: "container"
},
ceiling: {
scopeIn: [f.createAabbExtents(v.create(0, 0), v.create(4.5, 6))],
scopeOut: [f.createAabbExtents(v.create(0, 0), v.create(4.5, 6))],
img: {
sprite: "img/map/map-building-panicroom-ceiling.svg",
scale: .5,
alpha: 1,
tint: 6250335
}
},
mapObjects: [{
type: "metal_wall_ext_12",
pos: v.create(-4, 0),
scale: 1,
ori: 0
}, {
type: "metal_wall_ext_3",
pos: v.create(-2, 5.5),
scale: 1,
ori: 1
}, {
type: "metal_wall_ext_7",
pos: v.create(0, -5.5),
scale: 1,
ori: 1
}, {
type: "metal_wall_ext_12",
pos: v.create(4, 0),
scale: 1,
ori: 0
}, {
type: "loot_tier_2",
pos: v.create(0, -.05),
scale: 1,
ori: 0
}, {
type: r({
loot_tier_1: 1,
"": 1
}),
pos: v.create(0, .05),
scale: 1,
ori: 0
}]
},
barn_wall_int_1: s({
material: "wood",
extents: v.create(.5, .5),
props: {
hitParticle: "ltgreenChip",
img: o("img/map/map-wall-01-rounded.svg", 7173701)
}
}),
barn_wall_int_2: s({
material: "wood",
extents: v.create(.5, 1),
props: {
hitParticle: "ltgreenChip",
img: o("img/map/map-wall-02-rounded.svg", 7173701)
}
}),
barn_wall_int_4: s({
material: "wood",
extents: v.create(.5, 2),
props: {
hitParticle: "ltgreenChip",
img: o("img/map/map-wall-04-rounded.svg", 7173701)
}
}),
barn_wall_int_5: s({
material: "wood",
extents: v.create(.5, 2.5),
props: {
hitParticle: "ltgreenChip",
img: o("img/map/map-wall-05-rounded.svg", 7173701)
}
}),
barn_wall_int_6: s({
material: "wood",
extents: v.create(.5, 3),
props: {
hitParticle: "ltgreenChip",
img: o("img/map/map-wall-06-rounded.svg", 7173701)
}
}),
barn_wall_int_7: s({
material: "wood",
extents: v.create(.5, 3.5),
props: {
hitParticle: "ltgreenChip",
img: o("img/map/map-wall-07-rounded.svg", 7173701)
}
}),
barn_wall_int_8: s({
material: "wood",
extents: v.create(.5, 4),
props: {
hitParticle: "ltgreenChip",
img: o("img/map/map-wall-08-rounded.svg", 7173701)
}
}),
barn_wall_int_9: s({
material: "wood",
extents: v.create(.5, 4.5),
props: {
hitParticle: "ltgreenChip",
img: o("img/map/map-wall-09-rounded.svg", 7173701)
}
}),
barn_wall_int_11: s({
material: "wood",
extents: v.create(.5, 5.5),
props: {
hitParticle: "ltgreenChip",
img: o("img/map/map-wall-11-rounded.svg", 7173701)
}
}),
barn_wall_int_13: s({
material: "wood",
extents: v.create(.5, 6.5),
props: {
hitParticle: "ltgreenChip",
img: o("img/map/map-wall-13-rounded.svg", 7173701)
}
}),
barn_column_1: s({
material: "concrete",
extents: v.create(1, 1),
props: {
hitParticle: "ltgreenChip",
img: o("img/map/map-column-01.svg", 2764060)
}
}),
barn_01: {
type: "building",
map: {
display: !0,
shapes: [{
collider: f.createAabbExtents(v.create(0, 12), v.create(5, 2)),
color: 12300935
}, {
collider: f.createAabbExtents(v.create(0, -2), v.create(24.5, 12.8)),
color: 3816739
}]
},
terrain: {
grass: !0,
beach: !1
},
zIdx: 0,
floor: {
collision: [f.createAabbExtents(v.create(0, -2), v.create(25, 13.2)), f.createAabbExtents(v.create(0, 12), v.create(5.5, 2.5))],
img: {
sprite: "img/map/map-building-barn-floor.svg",
scale: .5,
alpha: 1,
tint: 16777215
},
surface: "house"
},
ceiling: {
scopeIn: [f.createAabbExtents(v.create(0, -2), v.create(24.5, 12.8)), f.createAabbExtents(v.create(0, 12), v.create(5.5, 2.5))],
scopeOut: [f.createAabbExtents(v.create(0, -14.5), v.create(5.5, 4)), f.createAabbExtents(v.create(0, 14.5), v.create(5.5, 4))],
vision: {
dist: 5.5,
width: 2.75,
linger: .5,
fadeRate: 6
},
img: {
sprite: "img/map/map-building-barn-ceiling.svg",
scale: .5,
alpha: 1,
tint: 16777215
},
destroy: {
wallCount: 99,
particle: "outhouseFrag",
particleCount: 15,
residue: "img/map/map-outhouse-res.svg"
}
},
mapObjects: [{
type: "brick_wall_ext_4",
pos: v.create(-24.5, 9),
scale: 1,
ori: 0
}, {
type: "brick_wall_ext_3",
pos: v.create(-22.5, 10.5),
scale: 1,
ori: 1
}, {
type: "brick_wall_ext_12",
pos: v.create(-24.5, -2),
scale: 1,
ori: 0
}, {
type: "brick_wall_ext_4",
pos: v.create(-24.5, -13),
scale: 1,
ori: 0
}, {
type: "brick_wall_ext_3",
pos: v.create(-22.5, -14.5),
scale: 1,
ori: 1
}, {
type: "house_window_01",
pos: v.create(-24.75, 5.5),
scale: 1,
ori: 0
}, {
type: "house_window_01",
pos: v.create(-24.75, -9.5),
scale: 1,
ori: 0
}, {
type: "house_window_01",
pos: v.create(-19.5, 10.75),
scale: 1,
ori: 1
}, {
type: "house_window_01",
pos: v.create(-19.5, -14.75),
scale: 1,
ori: 1
}, {
type: "brick_wall_ext_16",
pos: v.create(-10, 10.5),
scale: 1,
ori: 1
}, {
type: "brick_wall_ext_16",
pos: v.create(10, 10.5),
scale: 1,
ori: 1
}, {
type: "brick_wall_ext_16",
pos: v.create(-10, -14.5),
scale: 1,
ori: 1
}, {
type: "brick_wall_ext_6",
pos: v.create(5, -14.5),
scale: 1,
ori: 1
}, {
type: "brick_wall_ext_4",
pos: v.create(-5.5, 13),
scale: 1,
ori: 0
}, {
type: "brick_wall_ext_4",
pos: v.create(5.5, 13),
scale: 1,
ori: 0
}, {
type: "brick_wall_ext_3",
pos: v.create(-3.5, 14.5),
scale: 1,
ori: 1
}, {
type: "brick_wall_ext_3",
pos: v.create(3.5, 14.5),
scale: 1,
ori: 1
}, {
type: "house_window_01",
pos: v.create(9.5, -14.75),
scale: 1,
ori: 1
}, {
type: "house_door_01",
pos: v.create(2, 14.75),
scale: 1,
ori: 1
}, {
type: "house_door_01",
pos: v.create(-2, -14.75),
scale: 1,
ori: 3
}, {
type: "brick_wall_ext_4",
pos: v.create(24.5, 9),
scale: 1,
ori: 0
}, {
type: "brick_wall_ext_3",
pos: v.create(22.5, 10.5),
scale: 1,
ori: 1
}, {
type: "brick_wall_ext_13",
pos: v.create(17.5, -14.5),
scale: 1,
ori: 1
}, {
type: "brick_wall_ext_19",
pos: v.create(24.5, -5.5),
scale: 1,
ori: 0
}, {
type: "brick_wall_ext_1",
pos: v.create(23.5, -1.5),
scale: 1,
ori: 0
}, {
type: "house_window_01",
pos: v.create(24.75, 5.5),
scale: 1,
ori: 0
}, {
type: "house_window_01",
pos: v.create(19.5, 10.75),
scale: 1,
ori: 1
}, {
type: "panicroom_01",
pos: v.create(19.5, -8),
scale: 1,
ori: 0,
inheritOri: !0
}, {
type: "barn_wall_int_6",
pos: v.create(-21, .5),
scale: 1,
ori: 1
}, {
type: "barn_wall_int_6",
pos: v.create(-21, -4.5),
scale: 1,
ori: 1
}, {
type: "barn_wall_int_5",
pos: v.create(-11.5, .5),
scale: 1,
ori: 1
}, {
type: "barn_wall_int_2",
pos: v.create(-13, -4.5),
scale: 1,
ori: 1
}, {
type: "barn_wall_int_7",
pos: v.create(-6.5, -4.5),
scale: 1,
ori: 1
}, {
type: "barn_wall_int_8",
pos: v.create(-11.5, -10),
scale: 1,
ori: 0
}, {
type: "barn_wall_int_8",
pos: v.create(-7.5, 6),
scale: 1,
ori: 0
}, {
type: "barn_wall_int_5",
pos: v.create(-3.5, -11.5),
scale: 1,
ori: 0
}, {
type: "barn_wall_int_7",
pos: v.create(10.5, .5),
scale: 1,
ori: 1
}, {
type: "barn_wall_int_5",
pos: v.create(14.5, 7.5),
scale: 1,
ori: 0
}, {
type: "barn_wall_int_13",
pos: v.create(14.5, -7.5),
scale: 1,
ori: 0
}, {
type: "barn_wall_int_4",
pos: v.create(17, -1.5),
scale: 1,
ori: 1
}, {
type: "house_door_01",
pos: v.create(-18, -4.5),
scale: 1,
ori: 3
}, {
type: "house_door_01",
pos: v.create(-18, .5),
scale: 1,
ori: 3
}, {
type: "house_door_01",
pos: v.create(-3.5, -5),
scale: 1,
ori: 2
}, {
type: "house_door_01",
pos: v.create(14.5, 1),
scale: 1,
ori: 0
}, {
type: "house_door_02",
pos: v.create(23, -1.5),
scale: 1,
ori: 1
}, {
type: "barn_column_1",
pos: v.create(-8, 1),
scale: 1,
ori: 0,
inheritOri: !0
}, {
type: "barn_column_1",
pos: v.create(-11, -5),
scale: 1,
ori: 0,
inheritOri: !0
}, {
type: "barn_column_1",
pos: v.create(15, 0),
scale: 1,
ori: 0,
inheritOri: !0
}, {
type: r({
toilet_01: 5,
toilet_02: 1
}),
pos: v.create(-7.5, -12),
scale: 1,
ori: 2,
inheritOri: !0
}, {
type: r({
drawers_01: 7,
drawers_02: 1
}),
pos: v.create(-12.5, 8.5),
scale: 1,
ori: 0
}, {
type: r({
drawers_01: 7,
drawers_02: 1
}),
pos: v.create(-5.5, 7.25),
scale: 1,
ori: 1
}, {
type: r({
drawers_01: 7,
drawers_02: 1
}),
pos: v.create(-13.5, -9.5),
scale: 1,
ori: 3
}, {
type: "stand_01",
pos: v.create(16.5, 8.5),
scale: 1,
ori: 0,
inheritOri: !0
}, {
type: "stand_01",
pos: v.create(3.5, 12.5),
scale: 1,
ori: 3,
inheritOri: !0
}, {
type: "table_01",
pos: v.create(8, -8),
scale: 1,
ori: 0,
inheritOri: !0
}, {
type: "oven_01",
pos: v.create(12.25, -1.5),
scale: 1,
ori: 0,
inheritOri: !0
}, {
type: "refrigerator_01",
pos: v.create(8.75, -1.5),
scale: 1,
ori: 0,
inheritOri: !0
}, {
type: "bush_02",
pos: v.create(-22, -2),
scale: 1,
ori: 0,
inheritOri: !0
}, {
type: "bush_02",
pos: v.create(12, 8),
scale: 1,
ori: 0,
inheritOri: !0
}, {
type: r({
loot_tier_1: 1,
"": 1
}),
pos: v.create(-19, -9.5),
scale: 1,
ori: 0
}, {
type: r({
loot_tier_1: 1,
"": 1
}),
pos: v.create(-19, 5.5),
scale: 1,
ori: 0
}, {
type: "loot_tier_1",
pos: v.create(0, 5.5),
scale: 1,
ori: 0
}]
},
bank_wall_int_3: s({
material: "wood",
extents: v.create(.5, 1.5),
props: {
img: o("img/map/map-wall-03-rounded.svg", 7951934)
}
}),
bank_wall_int_4: s({
material: "wood",
extents: v.create(.5, 2),
props: {
img: o("img/map/map-wall-04-rounded.svg", 7951934)
}
}),
bank_wall_int_5: s({
material: "wood",
extents: v.create(.5, 2.5),
props: {
img: o("img/map/map-wall-05-rounded.svg", 7951934)
}
}),
bank_wall_int_8: s({
material: "wood",
extents: v.create(.5, 4),
props: {
img: o("img/map/map-wall-08-rounded.svg", 7951934)
}
}),
bank_01: {
type: "building",
map: {
display: !0,
shapes: [{
collider: f.createAabbExtents(v.create(-16, 7), v.create(10.75, 11)),
color: 7820585
}, {
collider: f.createAabbExtents(v.create(6, 0), v.create(11.5, 18.25)),
color: 9989427
}, {
collider: f.createAabbExtents(v.create(22, 4), v.create(4.5, 7.5)),
color: 7820585
}]
},
terrain: {
grass: !0,
beach: !1
},
zIdx: 0,
floor: {
collision: [f.createAabbExtents(v.create(6, -1), v.create(11.25, 18.25)), f.createAabbExtents(v.create(21.5, 4), v.create(4.75, 7.25))],
img: {
sprite: "img/map/map-building-bank-floor.svg",
scale: .5,
alpha: 1,
tint: 16777215
},
surface: "tile"
},
ceiling: {
scopeIn: [f.createAabbExtents(v.create(6, -1), v.create(11.25, 18.25)), f.createAabbExtents(v.create(21.5, 4), v.create(4.75, 7.25)), f.createAabbExtents(v.create(-16, 6), v.create(10.25, 11))],
scopeOut: [f.createAabbExtents(v.create(6, 1.5), v.create(15.25, 20.25))],
vision: {
dist: 5.5,
width: 2.75,
linger: .5,
fadeRate: 6
},
img: {
sprite: "img/map/map-building-bank-ceiling.svg",
scale: .5,
alpha: 1,
tint: 16777215
},
destroy: {
wallCount: 99,
particle: "outhouseFrag",
particleCount: 15,
residue: "img/map/map-outhouse-res.svg"
}
},
mapObjects: [{
type: "brick_wall_ext_23",
pos: v.create(-14, 17),
scale: 1,
ori: 1
}, {
type: "brick_wall_ext_23",
pos: v.create(-26, 6),
scale: 1,
ori: 0
}, {
type: "brick_wall_ext_20",
pos: v.create(-15.5, -5),
scale: 1,
ori: 1
}, {
type: "brick_wall_ext_5",
pos: v.create(-5, -7),
scale: 1,
ori: 0
}, {
type: "brick_wall_ext_6",
pos: v.create(-5, -16.5),
scale: 1,
ori: 0
}, {
type: "brick_wall_ext_4",
pos: v.create(-2.5, -19),
scale: 1,
ori: 1
}, {
type: "brick_wall_ext_7",
pos: v.create(6, -19),
scale: 1,
ori: 1
}, {
type: "brick_wall_ext_4",
pos: v.create(14.5, -19),
scale: 1,
ori: 1
}, {
type: "brick_wall_ext_6",
pos: v.create(17, -16.5),
scale: 1,
ori: 0
}, {
type: "brick_wall_ext_7",
pos: v.create(17, -6),
scale: 1,
ori: 0
}, {
type: "house_window_01",
pos: v.create(1, -19.25),
scale: 1,
ori: 1
}, {
type: "house_window_01",
pos: v.create(11, -19.25),
scale: 1,
ori: 1
}, {
type: "house_door_01",
pos: v.create(-5.25, -13.5),
scale: 1,
ori: 0
}, {
type: "house_door_01",
pos: v.create(17.25, -13.5),
scale: 1,
ori: 0
}, {
type: "brick_wall_ext_9",
pos: v.create(22, -3),
scale: 1,
ori: 1
}, {
type: "brick_wall_ext_13",
pos: v.create(26, 4),
scale: 1,
ori: 0
}, {
type: "brick_wall_ext_9",
pos: v.create(22, 11),
scale: 1,
ori: 1
}, {
type: "brick_wall_ext_7",
pos: v.create(17, 14),
scale: 1,
ori: 0
}, {
type: "brick_wall_ext_4",
pos: v.create(14.5, 17),
scale: 1,
ori: 1
}, {
type: "brick_wall_ext_8",
pos: v.create(4.5, 17),
scale: 1,
ori: 1
}, {
type: "house_window_01",
pos: v.create(-1, 17.25),
scale: 1,
ori: 1
}, {
type: "vault_01",
pos: v.create(-12, 6),
scale: 1,
ori: 0,
inheritOri: !0
}, {
type: "bank_wall_int_4",
pos: v.create(-2.5, -5),
scale: 1,
ori: 1
}, {
type: "bank_window_01",
pos: v.create(1, -5),
scale: 1,
ori: 1
}, {
type: "bank_wall_int_3",
pos: v.create(4, -5),
scale: 1,
ori: 1
}, {
type: "bank_wall_int_4",
pos: v.create(6, -3.5),
scale: 1,
ori: 0
}, {
type: "bank_window_01",
pos: v.create(6, 0),
scale: 1,
ori: 0
}, {
type: "bank_wall_int_4",
pos: v.create(6, 3.5),
scale: 1,
ori: 0
}, {
type: "bank_wall_int_4",
pos: v.create(8.5, 5),
scale: 1,
ori: 1
}, {
type: "bank_window_01",
pos: v.create(12, 5),
scale: 1,
ori: 1
}, {
type: "bank_wall_int_3",
pos: v.create(15, 5),
scale: 1,
ori: 1
}, {
type: "bank_wall_int_5",
pos: v.create(17, 4),
scale: 1,
ori: 0
}, {
type: "bank_wall_int_8",
pos: v.create(21.5, 4),
scale: 1,
ori: 1
}, {
type: "house_door_01",
pos: v.create(17, -2.5),
scale: 1,
ori: 0
}, {
type: "house_door_01",
pos: v.create(17, 10.5),
scale: 1,
ori: 2
}, {
type: "house_door_01",
pos: v.create(12.5, 17.25),
scale: 1,
ori: 1
}, {
type: r({
drawers_01: 7,
drawers_02: 1
}),
pos: v.create(6, -17),
scale: 1,
ori: 2
}, {
type: r({
toilet_01: 5,
toilet_02: 1
}),
pos: v.create(23.5, .5),
scale: 1,
ori: 3,
inheritOri: !0
}, {
type: r({
toilet_01: 5,
toilet_02: 1
}),
pos: v.create(23.5, 7.5),
scale: 1,
ori: 3,
inheritOri: !0
}, {
type: "stand_01",
pos: v.create(15, 15),
scale: 1,
ori: 0,
inheritOri: !0
}, {
type: "bush_02",
pos: v.create(-2.5, -16.25),
scale: 1,
ori: 0,
inheritOri: !0
}, {
type: "bush_02",
pos: v.create(14.5, -16.25),
scale: 1,
ori: 0,
inheritOri: !0
}, {
type: "crate_01",
pos: v.create(19.75, 13.75),
scale: .9,
ori: 0,
inheritOri: !1
}, {
type: r({
loot_tier_1: 1
}),
pos: v.create(12, 0),
scale: 1,
ori: 0
}, {
type: r({
loot_tier_1: 1,
"": 1
}),
pos: v.create(1, 0),
scale: 1,
ori: 0
}, {
type: "tree_01",
pos: v.create(-16.5, -12.5),
scale: 1.1,
ori: 0,
inheritOri: !0
}, {
type: "barrel_01",
pos: v.create(-7.5, -7.25),
scale: .85,
ori: 0,
inheritOri: !0
}, {
type: "tree_01",
pos: v.create(21, -7),
scale: .55,
ori: 0,
inheritOri: !0
}, {
type: "tree_01",
pos: v.create(21, -16.25),
scale: .55,
ori: 0,
inheritOri: !0
}]
},
vault_door_main: d({
material: "metal",
hinge: v.create(1, 3.5),
extents: v.create(1, 3.5),
sprite: "img/map/map-door-02.svg",
props: {
door: {
interactionRad: 2.5,
openSpeed: .23,
openHeight: 10,
openOneWay: -1,
openDelay: 4.1,
openOnce: !0,
spriteAnchor: v.create(.2, 1),
sound: {
open: "none",
close: "none",
change: "vault_change_01"
}
}
}
}),
vault_01: {
type: "building",
map: {
display: !1,
color: 6707790,
scale: 1
},
terrain: {
grass: !0,
beach: !1
},
zIdx: 1,
floor: {
collision: [f.createAabbExtents(v.create(-3.5, 0), v.create(10, 10.5))],
img: {
sprite: "img/map/map-building-vault-floor.svg",
scale: .5,
alpha: 1,
tint: 16777215
},
surface: "container"
},
ceiling: {
scopeIn: [f.createAabbExtents(v.create(-3.5, 0), v.create(9.25, 10.5))],
scopeOut: [f.createAabbExtents(v.create(-3.5, 0), v.create(10, 10.5))],
img: {
sprite: "img/map/map-building-vault-ceiling.svg",
scale: .5,
alpha: 1,
tint: 6250335
}
},
mapObjects: [{
type: "metal_wall_ext_1",
pos: v.create(-12, 8),
scale: 1,
ori: 0
}, {
type: "metal_wall_ext_2",
pos: v.create(-11.5, 9),
scale: 1,
ori: 1
}, {
type: "metal_wall_ext_5",
pos: v.create(-12, 0),
scale: 1,
ori: 0
}, {
type: "metal_wall_ext_1",
pos: v.create(-12, -8),
scale: 1,
ori: 0
}, {
type: "metal_wall_ext_2",
pos: v.create(-11.5, -9),
scale: 1,
ori: 1
}, {
type: "metal_wall_ext_4",
pos: v.create(-3.5, -9),
scale: 1,
ori: 1
}, {
type: "metal_wall_ext_4",
pos: v.create(-3.5, 9),
scale: 1,
ori: 1
}, {
type: "metal_wall_ext_thick_3",
pos: v.create(5, -9.5),
scale: 1,
ori: 1
}, {
type: "metal_wall_ext_thick_3",
pos: v.create(5, 9.5),
scale: 1,
ori: 1
}, {
type: "metal_wall_ext_thick_5",
pos: v.create(5.5, -6),
scale: 1,
ori: 0
}, {
type: "metal_wall_ext_thick_5",
pos: v.create(5.5, 6),
scale: 1,
ori: 0
}, {
type: "vault_door_main",
pos: v.create(6.5, 3.5),
scale: 1,
ori: 2
}, {
type: r({
deposit_box_01: 7,
deposit_box_02: 1
}),
pos: v.create(-12.35, 5),
scale: 1,
ori: 1
}, {
type: r({
deposit_box_01: 7,
deposit_box_02: 1
}),
pos: v.create(-12.35, -5),
scale: 1,
ori: 1
}, {
type: r({
deposit_box_01: 7,
deposit_box_02: 1
}),
pos: v.create(-8, 9.35),
scale: 1,
ori: 0
}, {
type: r({
deposit_box_01: 7,
deposit_box_02: 1
}),
pos: v.create(-8, -9.35),
scale: 1,
ori: 2
}, {
type: r({
deposit_box_01: 7,
deposit_box_02: 1
}),
pos: v.create(1, 9.35),
scale: 1,
ori: 0
}, {
type: r({
deposit_box_01: 7,
deposit_box_02: 1
}),
pos: v.create(1, -9.35),
scale: 1,
ori: 2
}, {
type: "crate_05",
pos: v.create(-3.5, 6.5),
scale: 1,
ori: 0,
inheritOri: !0
}, {
type: "crate_05",
pos: v.create(-3.5, -6.5),
scale: 1,
ori: 2,
inheritOri: !0
}, {
type: r({
loot_tier_vault_floor: 1
}),
pos: v.create(-3.5, 0),
scale: 1,
ori: 0
}]
},
house_wall_int_3: s({
material: "wood",
extents: v.create(.5, 1.5),
props: {
hitParticle: "tanChip",
img: o("img/map/map-wall-03-rounded.svg", 10584424)
}
}),
house_wall_int_4: s({
material: "wood",
extents: v.create(.5, 2),
props: {
hitParticle: "tanChip",
img: o("img/map/map-wall-04-rounded.svg", 10584424)
}
}),
house_wall_int_5: s({
material: "wood",
extents: v.create(.5, 2.5),
props: {
hitParticle: "tanChip",
img: o("img/map/map-wall-05-rounded.svg", 10584424)
}
}),
house_wall_int_8: s({
material: "wood",
extents: v.create(.5, 4),
props: {
hitParticle: "tanChip",
img: o("img/map/map-wall-08-rounded.svg", 10584424)
}
}),
house_wall_int_9: s({
material: "wood",
extents: v.create(.5, 4.5),
props: {
hitParticle: "tanChip",
img: o("img/map/map-wall-09-rounded.svg", 10584424)
}
}),
house_wall_int_11: s({
material: "wood",
extents: v.create(.5, 5.5),
props: {
hitParticle: "tanChip",
img: o("img/map/map-wall-11-rounded.svg", 10584424)
}
}),
house_column_1: s({
material: "concrete",
extents: v.create(1, 1),
props: {
hitParticle: "tanChip",
img: o("img/map/map-column-01.svg", 5587506)
}
}),
house_red_01: {
type: "building",
map: {
display: !0,
color: 6429724,
scale: 1
},
terrain: {
grass: !0,
beach: !1
},
zIdx: 0,
floor: {
collision: [f.createAabbExtents(v.create(0, 0), v.create(14.5, 13))],
img: {
sprite: "img/map/map-building-house-floor.svg",
scale: .5,
alpha: 1,
tint: 16777215
},
surface: "house"
},
ceiling: {
scopeIn: [f.createAabbExtents(v.create(0, 0), v.create(14.5, 13))],
scopeOut: [f.createAabbExtents(v.create(0, 0), v.create(16.5, 15))],
vision: {
dist: 5.5,
width: 2.75,
linger: .5,
fadeRate: 6
},
img: {
sprite: "img/map/map-building-house-ceiling.svg",
scale: .5,
alpha: 1,
tint: 16777215
}
},
mapObjects: [{
type: "brick_wall_ext_12",
pos: v.create(-9, 13),
scale: 1,
ori: 1
}, {
type: "brick_wall_ext_14",
pos: v.create(8, 13),
scale: 1,
ori: 1
}, {
type: "house_door_01",
pos: v.create(1, 13.25),
scale: 1,
ori: 1
}, {
type: "brick_wall_ext_5",
pos: v.create(-14.5, 10.5),
scale: 1,
ori: 0
}, {
type: "brick_wall_ext_10",
pos: v.create(-14.5, -.5),
scale: 1,
ori: 0
}, {
type: "brick_wall_ext_4",
pos: v.create(-14.5, -10.5),
scale: 1,
ori: 0
}, {
type: "house_window_01",
pos: v.create(-14.75, 6),
scale: 1,
ori: 0
}, {
type: "house_window_01",
pos: v.create(-14.75, -7),
scale: 1,
ori: 0
}, {
type: "brick_wall_ext_5",
pos: v.create(-12.5, -13),
scale: 1,
ori: 1
}, {
type: "brick_wall_ext_5",
pos: v.create(-4.5, -13),
scale: 1,
ori: 1
}, {
type: "brick_wall_ext_5",
pos: v.create(4.5, -13),
scale: 1,
ori: 1
}, {
type: "brick_wall_ext_5",
pos: v.create(12.5, -13),
scale: 1,
ori: 1
}, {
type: "house_window_01",
pos: v.create(-8.5, -13.25),
scale: 1,
ori: 3
}, {
type: "house_window_01",
pos: v.create(8.5, -13.25),
scale: 1,
ori: 3
}, {
type: "house_door_01",
pos: v.create(-2, -13.25),
scale: 1,
ori: 3
}, {
type: "brick_wall_ext_8",
pos: v.create(14.5, 8.5),
scale: 1,
ori: 0
}, {
type: "brick_wall_ext_9",
pos: v.create(14.5, -3),
scale: 1,
ori: 0
}, {
type: "brick_wall_ext_2",
pos: v.create(14.5, -11.5),
scale: 1,
ori: 0
}, {
type: "house_window_01",
pos: v.create(14.75, -9),
scale: 1,
ori: 2
}, {
type: "house_window_01",
pos: v.create(14.75, 3),
scale: 1,
ori: 2
}, {
type: "house_wall_int_9",
pos: v.create(-9.5, -1),
scale: 1,
ori: 1
}, {
type: "house_wall_int_5",
pos: v.create(4.5, -6),
scale: 1,
ori: 0
}, {
type: "house_wall_int_9",
pos: v.create(9.5, -4),
scale: 1,
ori: 1
}, {
type: "house_wall_int_8",
pos: v.create(5.5, 8.5),
scale: 1,
ori: 0
}, {
type: "house_wall_int_4",
pos: v.create(8, 7),
scale: 1,
ori: 1
}, {
type: "house_door_01",
pos: v.create(4.5, -12.5),
scale: 1,
ori: 0
}, {
type: "house_door_01",
pos: v.create(6, 2.5),
scale: 1,
ori: 2
}, {
type: "house_door_01",
pos: v.create(14, 7),
scale: 1,
ori: 1
}, {
type: "house_column_1",
pos: v.create(6, 3.5),
scale: 1,
ori: 0
}, {
type: "house_column_1",
pos: v.create(6, -2.5),
scale: 1,
ori: 0
}, {
type: r({
toilet_01: 5,
toilet_02: 1
}),
pos: v.create(8, 10),
scale: 1,
ori: 1,
inheritOri: !0
}, {
type: "stand_01",
pos: v.create(12.25, -2),
scale: 1,
ori: 3,
inheritOri: !0
}, {
type: r({
drawers_01: 7,
drawers_02: 1
}),
pos: v.create(7.75, -6),
scale: 1,
ori: 0
}, {
type: "stand_01",
pos: v.create(-12.25, -3),
scale: 1,
ori: 1,
inheritOri: !0
}, {
type: "table_01",
pos: v.create(-11.25, 1.75),
scale: 1,
ori: 0,
inheritOri: !0
}, {
type: "oven_01",
pos: v.create(-7, 11),
scale: 1,
ori: 0,
inheritOri: !0
}, {
type: "refrigerator_01",
pos: v.create(-7, 1),
scale: 1,
ori: 2,
inheritOri: !0
}, {
type: "bush_02",
pos: v.create(-12, -10.5),
scale: 1,
ori: 0,
inheritOri: !0
}, {
type: "loot_tier_1",
pos: v.create(0, 4.5),
scale: 1,
ori: 0
}]
},
container_wall_top: s({
material: "metal",
extents: v.create(2.75, .4)
}),
container_wall_side: s({
material: "metal",
extents: v.create(.4, 5.5)
}),
container_wall_side_open: s({
material: "metal",
extents: v.create(.4, 6)
}),
container_01: p({
open: !1,
tint: 3560807,
ceilingSprite: "map-building-container-ceiling-01.svg"
}),
container_02: p({
open: !1,
tint: 3560807,
ceilingSprite: "map-building-container-ceiling-02.svg"
}),
container_03: p({
open: !1,
tint: 3560807,
ceilingSprite: "map-building-container-ceiling-03.svg"
}),
container_04: p({
open: !0,
tint: 3560807,
ceilingSprite: "map-building-container-open-ceiling-01.svg"
}),
loot_tier_1: {
type: "loot_spawner",
collision: f.createCircle(v.create(0, 0), 3),
tier: "tier_world",
terrain: {
grass: !0,
beach: !0
}
},
loot_tier_2: {
type: "loot_spawner",
collision: f.createCircle(v.create(0, 0), 3),
tier: "tier_container",
terrain: {
grass: !0,
beach: !0
}
},
loot_tier_vault_floor: {
type: "loot_spawner",
collision: f.createCircle(v.create(0, 0), 3),
tier: "tier_vault_floor",
terrain: {
grass: !0,
beach: !0
}
},
decal_barrel_explosion: {
type: "decal",
rad: 1,
img: {
sprite: "img/map/map-barrel-res.svg",
scale: .24,
alpha: 1,
tint: 16777215
}
},
decal_frag_explosion: {
type: "decal",
rad: 1,
img: {
sprite: "img/map/map-barrel-res.svg",
scale: .2,
alpha: .8,
tint: 16777215
}
},
decal_smoke_explosion: {
type: "decal",
rad: 1,
img: {
sprite: "img/map/map-smoke-res.svg",
scale: .2,
alpha: .5,
tint: 16777215
}
}
};
e.exports = {
Defs: x,
MinScale: .125,
MaxScale: 2.5,
oriToRad: a,
getBoundingCollider: n
}
},
BkwK: function(e, t, i) {
"use strict";
var a = {
"@metadata": {
"last-updated": "2018-01-28",
locale: "ko"
},
"word-order": "sov",
"index-slogan": "2D 배틀 로얄",
"index-region": "월드",
"index-north-america": "북아메리카",
"index-europe": "유럽",
"index-asia": "아시아",
"index-players": "플레이어",
"index-play-solo": "솔로하기",
"index-play-duo": "듀오하기",
"index-play-squad": "스쿼드하기",
"index-create-team": "팀 만들기",
"index-how-to-play": "초보자 가이드",
"index-leave-team": "팀에서 나가기",
"index-joining-team": "팀 조인중",
"index-creating-team": "팀 만드는중",
"index-invite-link": "친구 초대",
"index-solo": "솔로",
"index-duo": "듀오",
"index-squad": "스쿼드",
"index-auto-fill": "Auto Fill",
"index-no-fill": "No Fill",
"index-waiting-for-leader": "파티장 준비중",
"index-play": "시작",
"index-featured-youtuber": "유튜버",
"index-settings": "세팅",
"index-high-resolution": "고화질 (그래픽을 높입니다)",
"index-screen-shake": "화면 효과",
"index-master-volume": "전체 사운드",
"index-sfx-volume": "효과음 사운드",
"index-music-volume": "음악 사운드",
"index-team-is-full": "팀이 꽉 찾습니다!",
"index-failed-joining-team": "팀에 들어가지 못했습니다.",
"index-failed-creating-team": "팀을 만들수 없습니다.",
"index-failed-finding-game": "게임을 찾지 못하였습니다.",
"index-failed-joining-game": "게임에 들어가지 못했습니다.",
"index-lost-connection": "네트워크 연결이 끊어짐.",
"index-host-closed": "네트워크 연결이 끊어짐.",
"index-view-more": "더보기",
"index-back-to-main": "메인 메뉴로",
"index-most-kills": "킬 고득점",
"index-total-kills": "전체 킬 득점",
"index-total-wins": "이긴 전적",
"index-top-5-percent": "Top 5",
"index-kill-death-ratio": "K/D",
"index-for": "For",
"index-today": "오늘 점수",
"index-this-week": "7 일 점수",
"index-all-time": "All Time 점수",
"index-top-100": "TOP 100",
"index-rank": "랭킹",
"index-player": "플레이어",
"index-total-games": "전체게임 횟수",
"index-controls": "게임 조작법",
"index-movement": "이동",
"index-movement-ctrl": "W, A, S, D",
"index-aim": "조준",
"index-aim-ctrl": "마우스",
"index-punch": "펀치",
"index-shoot": "발사",
"index-shoot-ctrl": "좌클릭",
"index-change-weapons": "무기바꾸기",
"index-change-weapons-ctrl": "1-4 or 스크롤",
"index-stow-weapons": "무기 집어넣기",
"index-stow-weapons-ctrl": "3 or E",
"index-swap-weapons": "그전 무기로 바꾸기",
"index-swap-weapons-ctrl": "Q",
"index-reload": "리로드",
"index-reload-ctrl": "R",
"index-scope-zoom": "줌 인 or 아웃",
"index-scope-zoom-ctrl": "좌클릭으로 줌",
"index-pickup": "줍기",
"index-loot": "줍기",
"index-revive": "부활",
"index-pickup-ctrl": "F",
"index-use-medical": "힐링",
"index-use-medical-ctrl": "좌클릭, 7-0",
"index-drop-item": "아이템 버리기",
"index-drop-item-ctrl": "우클릭",
"index-cancel-action": "행동취소",
"index-cancel-action-ctrl": "X",
"index-view-map": "지도보기",
"index-view-map-ctrl": "M or G",
"index-toggle-minimap": "미니 맵 전환",
"index-toggle-minimap-ctrl": "V",
"index-use-ping": "듀오/스쿼드 멤버와 소통하기",
"index-use-ping-ctrl": "C를 누른 상태에서 우클릭을 하고 마우스를 드래그해 이모티콘을 선택하세요!",
"index-use-emote": "이모티콘 사용하기",
"index-use-emote-ctrl": "화면에 우클릭을 누른 채 마우스를 드래그해 이모티콘을 선택하세요!",
"index-tips-1-desc": "surviv.io의 목표는 마지막 1인, 또는 듀오, 또는 스쿼드가 되는 것입니다! 한 게임당 목숨은 한 개 - 죽으면 다시 부활할 수 없어요!",
"index-tips-2": "2D PUBG",
"index-tips-2-desc": "PUBG, 포트나이트, 또는 H1Z1와 같은 배틀로얄 장르의 게임을 좋아하신다면, 이미 당신은 surviv.io의 세계에 들어와 있습니다! 이 게임은 2D로 되어 있는 배틀그라운드라고 생각하시면 됩니다(조금 더 안정적인 서버와 먹기 쉬워진 치킨과 함께요.)",
"index-tips-3": "파밍과 전투",
"index-tips-3-desc": "당신이 시작할 때에는 작은 공간 외에는 아무것도 주어지지 않습니다. 맵 곳곳을 돌아다니며 무기, 탄약, 조준경, 그리고 의료용 아이템을 찾아다니세요. 다른 플레이어를 사살하면 그 플레이어의 아이템을 차지할 수 있습니다!",
"index-tips-4": "자기장 = 제 2의 적!",
"index-tips-4-desc": "다른 플레이어만이 당신에게 데미지를 주는 것은 아닙니다. 시간이 지날 때마다 빨간색 자기장이 점점 좁혀옵니다. 자기장 안에 있다면 경기 후반으로 갈수록 높은 데미지를 받게 되죠. 지도를 보며 안전에 신경쓰세요!",
"game-alive": "생존",
"game-reloading": "장전중",
"game-using": "사용중",
"game-reviving": "부활중",
"game-revive-teammate": "팀원부활",
"game-equip": "착용",
"game-cancel": "취소",
"game-You": "You",
"game-you": "you",
"game-themselves": "themselves",
"game-yourself": "yourself",
"game-you-died": "died",
"game-player-died": "died",
"game-with": "with",
"game-knocked-out": "knocked out",
"game-killed": "killed",
"game-finally-killed": "finally killed",
"game-finally-bled-out": "finally bled out",
"game-died-outside": "died outside the safe zone",
"game-the-red-zone": "The red zone",
"game-waiting-for-players": "플레이어 기다리느중",
"game-spectating": "Spectating",
"game-red-zone-advances": "빨간 구역 움직입니다!",
"game-red-zone-advancing": "빨간 구역이 움직입니다. 안전지대로 대피하십시요.",
"game-seconds": "s",
"game-minutes": "m",
"game-minute": "m",
"game-m": "m",
"game-s": "s",
"game-not-enough-space": "공간이 부족합니다!",
"game-item-already-owned": "이 물건은 이미 소유 하고 있습니다!",
"game-item-already-equipped": "이 물건은 이미 착용 하고 있습니다!",
"game-better-item-equipped": "더 좋은 아이템을 착용 하고 있습니다!",
"game-play-new-game": "새로 시작하기",
"game-spectate": "관중모드",
"game-full-screen": "풀 스크린",
"game-sound": "사운드",
"game-quit-game": "나가기",
"game-return-to-game": "돌아가기",
"game-hide-match-stats": "게임통계 감추기",
"game-view-match-stats": "게임통계 보이기",
"game-previous-teammate": "이전 플레이어",
"game-next-teammate": "다음 플레이어",
"game-spectate-previous": "",
"game-spectate-next": "",
"game-leave-game": "나가기",
"game-your-results": "랭킹",
"game-chicken": "이겼닭! 오늘 저녁은 치킨이닭!",
"game-won-the-game": "승리.",
"game-team-eliminated": "그럴 수 있어. 이런 날도 있는 거지 뭐.",
"game-rank": "랭킹",
"game-team-rank": "팀 랭킹",
"game-team-kills": "팀 킬",
"game-kill": "킬",
"game-kills": "킬",
"game-damage-dealt": "가한 피해량",
"game-damage-taken": "받은 피해량",
"game-survived": "생존시간",
"game-backpack00": "주머니",
"game-backpack01": "작은 가방",
"game-backpack02": "보통 가방",
"game-backpack03": "군인 가방",
"game-bandage": "붕대",
"game-bandage-tooltip": "레프트 클릭 하시면 15 HP 증가합니다.",
"game-healing-tooltip": "75 HP 이상 힐할수 없읍니다.",
"game-healthkit": "구급 상자",
"game-healthkit-tooltip": "레프트 클릭 하시면 100 HP 증가합니다.",
"game-soda": "소다",
"game-soda-tooltip": "레프트 클릭 하시면 아드레날린 25 증가합니다.",
"game-adrenaline-tooltip": "아드레날린은 HP 지속적으로 회복시킴니다.",
"game-painkiller": "알약",
"game-painkiller-tooltip": "레프트 클릭 하시면 아드레날린 50 증가합니다.",
"game-9mm": "9mm",
"game-9mm-tooltip": "M9, Glock, MP5, MAC-10, UMP9 탄약.",
"game-12gauge": "12 게이지",
"game-12gauge-tooltip": "M870, SAIGA-12, MP220 탄약.",
"game-762mm": "7.62mm",
"game-762mm-tooltip": "AK-47, M39, Mosin Nagant, OT-38, DP-28 탄약.",
"game-556mm": "5.56mm",
"game-556mm-tooltip": "FAMAS, HK416, Mk 12, M249 탄약.",
"game-chest01": "조끼 레벨 1",
"game-chest02": "조끼 레벨 2",
"game-chest03": "조끼 레벨 3",
"game-helmet01": "헬멧 레벨 1",
"game-helmet02": "헬멧 레벨 2",
"game-helmet03": "헬멧 레벨 3",
"game-1xscope": "1x 스코프",
"game-2xscope": "2x 스코프",
"game-4xscope": "4x 스코프",
"game-8xscope": "8x 스코프",
"game-15xscope": "15x 스코프",
"game-level-1": "레벨 1",
"game-level-2": "레벨 2",
"game-level-3": "레벨 3",
"game-outfitBase": "Basic Outfit",
"game-outfitRoyalFortune": "Royal Fortune",
"game-outfitKeyLime": "Key Lime",
"game-outfitCobaltShell": "Cobalt Shell",
"game-outfitCarbonFiber": "Carbon Fiber",
"game-outfitDarkGloves": "The Professional",
"game-outfitGhillie": "Ghillie Suit",
"game-outfitCamo": "Forest Camo",
"game-outfitRed": "Target Practice",
"game-outfitWhite": "Arctic Avenger",
"game-ak47": "AK-47",
"game-dp28": "DP-28",
"game-mosin": "Mosin Nagant",
"game-m39": "M39 EMR",
"game-mp5": "MP5",
"game-mac10": "MAC-10",
"game-ump9": "UMP9",
"game-m870": "M870",
"game-mp220": "MP220",
"game-saiga": "Saiga-12",
"game-m9": "M9",
"game-glock": "Glock 18C",
"game-ot38": "OT-38",
"game-frag": "수류탄",
"game-hud-frag": "수류탄",
"game-smoke": "연막탄",
"game-hud-smoke": "연막탄",
"game-barrel_01": "a barrel",
"game-silo_01": "a silo"
};
e.exports = a
},
CVWn: function(e, t, i) {
"use strict";
function a(e, t) {
if (!(e instanceof t))
throw new TypeError("Cannot call a class as a function")
}
var n = function() {
function e(e, t) {
for (var i = 0; i < t.length; i++) {
var a = t[i];
a.enumerable = a.enumerable || !1,
a.configurable = !0,
"value"in a && (a.writable = !0),
Object.defineProperty(e, a.key, a)
}
}
return function(t, i, a) {
return i && e(t.prototype, i),
a && e(t, a),
t
}
}()
, r = i("gKxX")
, o = i("0od3")
, s = i("Tf6H")
, l = i("/2+T")
, u = i("b/6L")
, c = i("dT1u")
, d = i("r4ug")
, h = function() {
function e(t) {
a(this, e),
this.smokeBarn = t
}
return n(e, [{
key: "init",
value: function() {}
}, {
key: "free",
value: function() {
this.particle.fadeOut(),
this.particle = null
}
}, {
key: "updateData",
value: function(e, t, i) {
this.type = e.type,
this.pos = l.copy(e.pos),
this.rad = e.rad,
i && (this.particle = this.smokeBarn.allocParticle(),
this.particle.init(this.pos, this.rad)),
this.particle.posTarget = l.copy(this.pos),
this.particle.radTarget = this.rad
}
}]),
e
}()
, p = function() {
function e() {
a(this, e);
var t = ["img/particles/part-smoke-02.svg", "img/particles/part-smoke-03.svg"];
this.sprite = r.Sprite.fromImage(t[Math.floor(Math.random() * t.length)]),
this.sprite.anchor = new r.Point(.5,.5),
this.sprite.visible = !1
}
return n(e, [{
key: "init",
value: function(e, t) {
this.pos = l.copy(e),
this.posTarget = l.copy(this.pos),
this.rad = t,
this.radTarget = this.rad,
this.rot = s.random(0, 2 * Math.PI),
this.rotVel = Math.PI * s.random(.25, .5) * (Math.random() < .5 ? -1 : 1),
this.fade = !1,
this.fadeTicker = 0,
this.fadeDuration = s.random(.5, .75),
this.tint = s.rgb2hex(s.hsv2rgb(0, 0, s.random(.9, .95)))
}
}, {
key: "fadeOut",
value: function() {
this.fade = !0
}
}]),
e
}()
, m = function() {
function e() {
a(this, e),
this.smokePool = new c.Pool(h,this),
this.particles = [],
this.display = new r.Container
}
return n(e, [{
key: "allocParticle",
value: function(e) {
for (var t = null, i = 0; i < this.particles.length; i++)
if (!this.particles[i].active) {
t = this.particles[i];
break
}
return t || (t = new p,
this.particles.push(t)),
t.active = !0,
t.sprite.parent && t.sprite.parent.removeChild(t.sprite),
this.display.addChildAt(t.sprite, 0),
t
}
}, {
key: "update",
value: function(e, t, i) {
for (var a = this.smokePool.getPool(), n = 0; n < a.length; n++) {
var r = a[n];
r.active && (u.dev && d.addCircle(r.pos, r.rad, 16711680, 0))
}
for (var s = 0; s < this.particles.length; s++) {
var l = this.particles[s];
if (l.active) {
l.rad = o.lerp(3 * e, l.rad, l.radTarget),
l.pos = o.v2lerp(3 * e, l.pos, l.posTarget);
l.rotVel *= 1 / (1 + .1 * e),
l.rot += l.rotVel * e,
l.fadeTicker += l.fade ? e : 0,
l.active = l.fadeTicker < l.fadeDuration;
var c = .9 * o.clamp(1 - l.fadeTicker / l.fadeDuration, 0, 1)
, h = t.pointToScreen(l.pos)
, p = t.pixels(2 * l.rad / t.ppu);
l.sprite.position.x = h.x,
l.sprite.position.y = h.y,
l.sprite.scale.x = p,
l.sprite.scale.y = p,
l.sprite.rotation = l.rot,
l.sprite.tint = l.tint,
l.sprite.alpha = c,
l.sprite.visible = l.active,
u.dev && d.addCircle(l.pos, l.rad, 16776960, 0)
}
}
}
}]),
e
}();
e.exports = {
SmokeBarn: m
}
},
"DI/9": function(e, t, i) {
"use strict";
function a(e, t) {
if (!(e instanceof t))
throw new TypeError("Cannot call a class as a function")
}
var n = function() {
function e(e, t) {
for (var i = 0; i < t.length; i++) {
var a = t[i];
a.enumerable = a.enumerable || !1,
a.configurable = !0,
"value"in a && (a.writable = !0),
Object.defineProperty(e, a.key, a)
}
}
return function(t, i, a) {
return i && e(t.prototype, i),
a && e(t, a),
t
}
}()
, r = i("gKxX")
, o = i("9xSA")
, s = i("Bk7F")
, l = i("0od3")
, u = i("Tf6H")
, c = i("/2+T")
, d = i("b/6L")
, h = i("r4ug")
, p = i("EZ6M")
, m = function() {
function e(t) {
a(this, e),
this.map = t,
this.sprite = new r.Sprite,
this.sprite.anchor = new r.Point(.5,.5)
}
return n(e, [{
key: "init",
value: function() {
this.isNew = !1,
this.smokeEmitter = null
}
}, {
key: "free",
value: function() {
this.sprite.parent && this.sprite.parent.removeChild(this.sprite),
this.smokeEmitter && (this.smokeEmitter.stop(),
this.smokeEmitter = null)
}
}, {
key: "updateData",
value: function(e, t, i) {
var a = this.map
, n = this.sprite;
t && (this.type = e.type,
this.healthT = e.healthT,
this.dead = e.dead);
var l = s.Defs[e.type];
if (this.pos = c.copy(e.pos),
this.rot = s.oriToRad(e.ori),
this.scale = e.scale,
this.imgScale = l.img.scale,
this.collider = o.transform(l.collision, this.pos, this.rot, this.scale),
i && (this.isNew = !0,
this.exploded = -1 != a.deadObstacleIds.indexOf(this.__id),
this.explodeParticle = l.explodeParticle,
this.hitParticle = l.hitParticle,
this.collidable = l.collidable,
this.destructible = l.destructible,
this.height = l.height,
this.sound = l.sound,
this.isWall = !!l.isWall,
this.isWindow = !!l.isWindow,
this.isBush = !!l.isBush,
this.isDoor = void 0 !== l.door,
this.isDoor && (this.door = {
interactionRad: l.door.interactionRad,
interpSpeed: l.door.openSpeed,
interpRot: s.oriToRad(e.ori),
doorOriOld: e.doorOri,
doorOri: e.doorOri,
doorSeq: e.doorSeq,
doorSeqOld: e.doorSeq
})),
this.isDoor && t && (this.door.canOpen = e.doorCanOpen,
this.door.doorOri = e.doorOri,
this.door.open = 0 != this.door.doorOri,
this.door.doorSeq = e.doorSeq),
void 0 !== l.explosion && !this.smokeEmitter && e.healthT < .5 && !e.dead) {
var u = c.normalize(c.create(1, 1));
this.smokeEmitter = a.particleBarn.addEmitter("smoke_barrel", this.pos, u, 1, 99999)
}
if (i || this.dead) {
var d = this.dead ? l.img.residue : l.img.sprite
, h = void 0 !== d;
!h && n.parent && n.parent.removeChild(n),
h && (n.texture = "none" == d ? r.Texture.EMPTY : r.Texture.fromImage(d),
n.anchor.x = this.isDoor ? l.door.spriteAnchor.x : .5,
n.anchor.y = this.isDoor ? l.door.spriteAnchor.y : .5,
n.tint = l.img.tint,
n.alpha = this.dead ? .75 : l.img.alpha,
n.zIdx = this.dead ? 1 : l.img.zIdx,
n.zOrd = this.__id,
a.addObstacleSprite(n)),
n.visible = h
}
}
}, {
key: "update",
value: function(e, t, i) {
var a = this.dead
, n = this.exploded
, r = this.map
, m = this.isNew
, g = this.pos
, f = this.explodeParticle
, y = this.sound;
if (this.isDoor) {
var v = this.door
, b = Math.PI * v.interpSpeed
, x = l.angleDiff(v.interpRot, this.rot)
, _ = l.sign(x) * b * e;
if (Math.abs(x) < Math.abs(_) && (_ = x),
v.interpRot += _,
v.doorSeq != v.doorSeqOld) {
var w = s.Defs[this.type]
, T = w.door.sound.change || "";
"" != T && i.playSound(T, {
channel: "sfx",
soundPos: g
}),
v.doorSeqOld = v.doorSeq
}
if (v.doorOri != v.doorOriOld) {
var k = s.Defs[this.type]
, S = v.open ? k.door.sound.open : k.door.sound.close;
i.playSound(S, {
channel: "sfx",
soundPos: g
}),
v.doorOriOld = v.doorOri
}
}
if (a && !n && (r.deadObstacleIds.push(this.__id),
this.exploded = !0,
this.smokeEmitter && (this.smokeEmitter.stop(),
this.smokeEmitter = null),
!m)) {
for (var M = o.toAabb(this.collider), P = c.mul(c.sub(M.max, M.min), .5), E = c.add(M.min, P), C = Math.floor(u.random(5, 11)), O = 0; O < C; O++) {
var I = c.mul(c.randomUnit(), u.random(5, 15))
, A = Array.isArray(f) ? f[Math.floor(Math.random() * f.length)] : f;
t.addParticle(p.Defs[A], E, I)
}
i.playSound(y.explode, {
channel: "sfx",
soundPos: E
})
}
if (this.isNew = !1,
this.smokeEmitter && (this.smokeEmitter.pos = c.copy(this.pos)),
d.debug && (this.isWindow || this.isDoor)) {
var D = this.rot
, R = c.create(Math.cos(D), Math.sin(D));
h.addRay(this.pos, R, 2, 65280, 0)
}
}
}, {
key: "render",
value: function(e) {
var t = this.pos
, i = this.isDoor ? this.door.interpRot : this.rot
, a = this.scale
, n = e.pointToScreen(t)
, r = e.pixels(a * this.imgScale);
this.sprite.x = n.x,
this.sprite.y = n.y,
this.sprite.scale.x = r,
this.sprite.scale.y = r,
this.sprite.rotation = -i,
d.debug && h.addCollider(this.collider, 16776960, 0)
}
}, {
key: "playHitFx",
value: function(e, t, i, a) {
for (var n = s.Defs[this.type], r = Math.floor(u.random(1, 2)), o = c.mul(t, 9.5), l = 0; l < r; l++)
o = c.rotate(o, (Math.random() - .5) * Math.PI / 3),
i.addParticle(p.Defs[this.hitParticle], e, o);
a.playGroup(n.sound.bullet, {
channel: "hits",
soundPos: e
})
}
}]),
e
}();
e.exports = m
},
DM7t: function(e, t, i) {
"use strict";
function a(e, t) {
if (!(e instanceof t))
throw new TypeError("Cannot call a class as a function")
}
var n = function() {
function e(e, t) {
for (var i = 0; i < t.length; i++) {
var a = t[i];
a.enumerable = a.enumerable || !1,
a.configurable = !0,
"value"in a && (a.writable = !0),
Object.defineProperty(e, a.key, a)
}
}
return function(t, i, a) {
return i && e(t.prototype, i),
a && e(t, a),
t
}
}()
, r = i("DlZn")
, o = {
Player: 0,
Obstacle: 1,
Loot: 2,
LootSpawner: 3,
DeadBody: 4,
Building: 5,
Decal: 6,
Projectile: 7,
Smoke: 8
}
, s = 65535
, l = function() {
function e() {
a(this, e),
this.objects = [],
this.idToObj = [];
for (var t = 0; t < s; t++)
this.idToObj[t] = null;
this.idNext = 1,
this.freeLists = {}
}
return n(e, [{
key: "allocId",
value: function(e) {
var t = 1;
if (this.idNext < s)
t = this.idNext++;
else {
var i = this.freeLists[e] || [];
i.length > 0 ? t = i.pop() : r(!1)
}
return t
}
}, {
key: "freeId",
value: function(e, t) {
this.freeLists[e] = this.freeLists[e] || [],
this.freeLists[e].push(t)
}
}, {
key: "register",
value: function(e, t) {
e.__id = this.allocId(t),
e.__type = t,
e.__dirtyPart = !0,
e.__dirtyFull = !0,
e.__arrayIdx = this.objects.length,
this.objects[e.__arrayIdx] = e,
this.idToObj[e.__id] = e
}
}, {
key: "unregister",
value: function(e) {
r(void 0 !== e.__id);
var t = this.objects.pop();
e !== t && (this.objects[e.__arrayIdx] = t,
t.__arrayIdx = e.__arrayIdx),
this.idToObj[e.__id] = null,
this.freeId(e.__type, e.__id),
delete e.__id,
delete e.__type,
delete e.__dirtyPart,
delete e.__dirtyFull,
delete e.__arrayIdx
}
}]),
e
}();
e.exports = {
MAX_ID: s,
Type: o,
Registrar: l
}
},
DMc6: function(e, t, i) {
"use strict";
var a = {
"@metadata": {
"last-updated": "2018-03-03",
locale: "pl"
},
"word-order": "svo",
"index-slogan": "Battle Royale 2D",
"index-region": "Region",
"index-north-america": "Północna Ameryka",
"index-europe": "Europa",
"index-asia": "Azja",
"index-players": "Gracze",
"index-play-solo": "Graj sam",
"index-play-duo": "Graj razem",
"index-play-squad": "Graj oddział",
"index-create-team": "Stwórz grupę",
"index-how-to-play": "Jak Grać",
"index-leave-team": "Wyjdź z grupy",
"index-joining-team": "Wchodzenie do grupy",
"index-creating-team": "Tworzenie grupy",
"index-invite-link": "Link Zapraszający",
"index-solo": "Solo",
"index-duo": "Wspólna gra",
"index-squad": "Drużyna",
"index-auto-fill": "Automatyczne Uzupełnianie",
"index-no-fill": "Bez Uzupełniania",
"index-waiting-for-leader": "Czekanie na przywódce do rozpoczęcia gry...",
"index-play": "Graj",
"index-featured-youtuber": "Wyróżniony YouTuber",
"index-settings": "Ustawienia",
"index-high-resolution": "Wysoka Rozdzielczość (zaznacz aby poprawić jakość wizualną)",
"index-screen-shake": "Trzęsienie ekranu",
"index-master-volume": "Głośność ogólną",
"index-sfx-volume": "Głośność efektów dźwiękowych",
"index-music-volume": "Głośność muzyki",
"index-team-is-full": "Grupa jest pełna!",
"index-failed-joining-team": "Nie udało się dołączyć do grupy.",
"index-failed-creating-team": "Nie udało się stworzyć grupy.",
"index-failed-finding-game": "Nie znaleziono gry.",
"index-failed-joining-game": "Nie udało się dołączyć do gry.",
"index-lost-connection": "Utracono połączenie z grupą.",
"index-host-closed": "Host zamnknął połączenie.",
"index-invalid-protocol": "Przestarzała wersja klienta.",
"index-view-more": "Zobacz więcej",
"index-back-to-main": "Powrót na Stronę Główną",
"index-most-kills": "Najwięcej Zabić",
"index-total-kills": "Wszystkie Zabicia",
"index-total-wins": "Wszystkie Wygrane",
"index-top-5-percent": "Najlepsze 5 procent",
"index-kill-death-ratio": "Średnia zabójstw do zgonów",
"index-for": "Dla",
"index-today": "Dzisiaj",
"index-this-week": "Ten Tydzień",
"index-all-time": "Od początku",
"index-top-100": "Najlepsze 100",
"index-rank": "Ranga",
"index-player": "Gracz",
"index-total-games": "Wszystkie Gry",
"index-controls": "Sterowanie",
"index-movement": "Ruch",
"index-movement-ctrl": "W, A, S, D",
"index-aim": "Celowanie",
"index-aim-ctrl": "Myszka",
"index-punch": "Uderzenie",
"index-shoot": "Strzał",
"index-shoot-ctrl": "Lewy Przycisk Myszy",
"index-change-weapons": "Zmień Broń",
"index-change-weapons-ctrl": "1 do 4 albo kółko myszy",
"index-stow-weapons": "Schowaj Broń (Tryb Pięści)",
"index-stow-weapons-ctrl": "3 lub E",
"index-swap-weapons": "Zmień na poprzednią broń",
"index-swap-weapons-ctrl": "Q",
"index-reload": "Przeładuj",
"index-reload-ctrl": "R",
"index-scope-zoom": "Przybliżenie",
"index-scope-zoom-ctrl": "Lewy Przycisk Myszy lub Przybliżenie",
"index-pickup": "Podnieś",
"index-loot": "Łup",
"index-revive": "Wskrześ",
"index-pickup-ctrl": "F",
"index-use-medical": "Użyj przyboru medycznego",
"index-use-medical-ctrl": "Lewy Przycisk Myszy na przyborze, lub 7 do 0",
"index-drop-item": "Upuść",
"index-drop-item-ctrl": "Prawy Przycisk Myszy na przedmiocie",
"index-cancel-action": "Przerwij czynność",
"index-cancel-action-ctrl": "X",
"index-view-map": "Pokaż Mapę",
"index-view-map-ctrl": "M albo G",
"index-toggle-minimap": "Minimapa",
"index-toggle-minimap-ctrl": "V",
"index-use-ping": "Użyj menu znaczników drużynowych",
"index-use-ping-ctrl": "Przytrzymaj C, następnie przytrzymaj Prawy Przycisk Myszy i przesuń myszą po czym puść Prawy Przycisk Myszy",
"index-use-emote": "Użyj menu emotikon",
"index-use-emote-ctrl": "Przytrzymaj Prawy Przycisk Myszy i przesuń myszą po czym puść Prawy Przycisk Myszy",
"index-tips-1-desc": "Celem surviv.io jest pozostanie ostatniom zyjącym graczem. Żyjesz tylko raz na gre - tutaj nie ma odrodzeń!",
"index-tips-2": "PUBG 2D",
"index-tips-2-desc": "Jeśli kiedykolwiek grałeś w grę typu Battle Royale jak PUBG, Fortnite czy H1Z1, to już jesteś w połowie drogi! Wyobraź sobie, że surviv.io to taki PUBG 2D.",
"index-tips-3": "Zbieraj i Zabijaj",
"index-tips-3-desc": "Rozpoczynasz grę bez żadnych przedmiotów, nie licząc podstawowego plecaka. Poruszaj się po mapie aby znaleźć przedmioty typu: broń, amunicja, lunety i medykamenty. Wyeliminuj pozostałych graczy i zabierz ich przedmioty!",
"index-tips-4": "Czerwone = Złe!",
"index-tips-4-desc": "Nie tylko gracze mogą cię zranić. Mordercza czerwona strefa będzie zmniejszać się z różnych stron mapy i będzie zadawać coraz większe obrażenia jeśli będziesz w niej pozostawać. Spoglądaj na mape i pilnuj się.",
"game-alive": "Żywych",
"game-reloading": "Przeładowanie",
"game-using": "Używanie",
"game-reviving": "Wskrzeszanie",
"game-revive-teammate": "Wskrześ Przyjaciela",
"game-equip": "Weź",
"game-cancel": "Przerwij",
"game-open-door": "Otwórz Drzwi",
"game-close-door": "Zamknij Drzwi",
"game-You": "Ty",
"game-you": "ty",
"game-themselves": "oni",
"game-yourself": "siebie",
"game-you-died": "umarłeś",
"game-player-died": "umarł",
"game-with": "z",
"game-knocked-out": "powalił",
"game-killed": "zabił",
"game-finally-killed": "wresczie zabił",
"game-finally-bled-out": "w końcu się wykrwawił",
"game-died-outside": "umarł poza strefą",
"game-the-red-zone": "Czerwona strefa",
"game-waiting-for-players": "Oczekiwanie na graczy",
"game-spectating": "Obserwujesz",
"game-red-zone-advances": "Czerwona strefa zmniejszy się za",
"game-red-zone-advancing": "Czerwona strefa zmniejsza się, udaj się do bezpiecznej strefy!",
"game-seconds": "sekundy",
"game-minutes": "minuty",
"game-minute": "minuta",
"game-m": "m",
"game-s": "s",
"game-not-enough-space": "Za mało miejsca!",
"game-item-already-owned": "Posiadasz już ten przedmiot!",
"game-item-already-equipped": "Używasz już tego przedmiotu!",
"game-better-item-equipped": "Posiadasz lepszy przedmiot!",
"game-play-new-game": "Graj jescze raz",
"game-spectate": "Obserwuj",
"game-full-screen": "Pełny Ekran",
"game-sound": "Dzwięk",
"game-quit-game": "Wyjdź z gry",
"game-return-to-game": "Wróć do gry",
"game-hide-match-stats": "Ukryj statystyki",
"game-view-match-stats": "Wyświetl statystyki",
"game-previous-teammate": "Poprzedni przyjaciel",
"game-next-teammate": "Następny przyjaciel",
"game-spectate-previous": "",
"game-spectate-next": "",
"game-leave-game": "Wyjdź z gry",
"game-your-results": "Twoje rezultaty",
"game-chicken": "Mecz wygrany! Kurczak podany!",
"game-won-the-game": "wygrał grę.",
"game-team-eliminated": "Twoja grupa została wyeliminowana.",
"game-rank": "Ranga",
"game-team-rank": "Ranga Grupy",
"game-team-kills": "Zabicia Grupy",
"game-kill": "Zabić",
"game-kills": "Zabić",
"game-damage-dealt": "Zadano obrażeń",
"game-damage-taken": "Otrzymano obrażeń",
"game-survived": "Przetrwano",
"game-backpack00": "Kieszonka",
"game-backpack01": "Mały plecak",
"game-backpack02": "Plecak",
"game-backpack03": "Wojskowy plecak",
"game-bandage": "Bandaż",
"game-bandage-tooltip": "Kliknij lewym przyciskiem myszy aby przywrócić 15 punktów zdrowia.",
"game-healing-tooltip": "Nie leczy powyżej 75 punktów zdrowia.",
"game-healthkit": "Apteczka",
"game-healthkit-tooltip": "Kliknij lewym przyciskiem myszy aby przywrócić 100 punktów zdrowia.",
"game-soda": "Soda",
"game-soda-tooltip": "Kliknij lewym przyciskiem myszy aby zwiększyć adrenalinę o 25.",
"game-adrenaline-tooltip": "Adrenalina przywraca zdrowie w miare upływu czasu.",
"game-painkiller": "Pigułki",
"game-painkiller-tooltip": "Kliknij lewym przyciskiem myszy aby zwiększyć adrenalinę o 50.",
"game-9mm": "9mm",
"game-9mm-tooltip": "Amunicja dla M9, Glock, MP5, MAC-10 i UMP9.",
"game-12gauge": "Kaliber 12",
"game-12gauge-tooltip": "Amunicja dla M870, Saiga-12 i MP220.",
"game-762mm": "7.62mm",
"game-762mm-tooltip": "Amunicja dla AK-47, M39, Mosin Nagant, OT-38 i DP-28.",
"game-556mm": "5.56mm",
"game-556mm-tooltip": "Amunicja dla FAMAS, HK416, Mk 12 i M249.",
"game-chest01": "Kamizelka Poziom 1",
"game-chest02": "Kamizelka Poziom 2",
"game-chest03": "Kamizelka Poziom 3",
"game-helmet01": "Hełm Poziom 1",
"game-helmet02": "Hełm Poziom 2",
"game-helmet03": "Hełm Poziom 3",
"game-1xscope": "1x Luneta",
"game-2xscope": "2x Luneta",
"game-4xscope": "4x Luneta",
"game-8xscope": "8x Luneta",
"game-15xscope": "15x Luneta",
"game-level-1": "P. 1",
"game-level-2": "P. 2",
"game-level-3": "P. 3",
"game-outfitBase": "Strój",
"game-outfitRoyalFortune": "Powodzenie Króla",
"game-outfitKeyLime": "Limonka",
"game-outfitCobaltShell": "Skorupa",
"game-outfitCarbonFiber": "Włókno Węglowe",
"game-outfitDarkGloves": "Profesjonalista",
"game-outfitGhillie": "Kameleon",
"game-outfitCamo": "Polowanie",
"game-outfitRed": "Trenowanie",
"game-outfitWhite": "Arktyka",
"game-outfitWoodland": "Leśna Walka",
"game-ak47": "AK-47",
"game-dp28": "DP-28",
"game-mosin": "Mosin Nagant",
"game-m39": "M39 EMR",
"game-mp5": "MP5",
"game-mac10": "MAC-10",
"game-ump9": "UMP9",
"game-m870": "M870",
"game-mp220": "MP220",
"game-saiga": "Saiga-12",
"game-m9": "M9",
"game-glock": "Glock 18C",
"game-ot38": "OT-38",
"game-frag": "Granat Odłamkowy",
"game-hud-frag": "Odłamkowy",
"game-barrel_01": "beczką",
"game-silo_01": "silosem",
"game-oven_01": "piekarnik"
};
e.exports = a
},
EZ6M: function(e, t, i) {
"use strict";
function a(e, t) {
this.min = e,
this.max = t
}
function n(e) {
return e instanceof a ? e.getRandom() : e
}
function r(e) {
return e instanceof Function ? e() : e
}
function o(e) {
this.active = !1,
this.ticker = 0,
this.def = {},
this.parent = null,
this.sprite = new c.Sprite,
this.sprite.anchor = new c.Point(.5,.5),
this.sprite.scale = new c.Point(1,1),
this.sprite.visible = !1,
this.container = e,
this.container.addChild(this.sprite)
}
function s() {
this.active = !1
}
function l() {
this.display = new c.Container,
this.particles = [],
this.emitters = [];
for (var e = 0; e < 512; e++)
this.particles[e] = new o(this.display)
}
var u = i("DlZn")
, c = i("gKxX")
, d = i("0od3")
, h = i("Tf6H")
, p = i("/2+T");
a.prototype = {
getRandom: function() {
return h.random(this.min, this.max)
}
};
var m = {
bloodSplat: {
image: ["img/particles/part-splat-01.svg", "img/particles/part-splat-02.svg", "img/particles/part-splat-03.svg"],
life: .5,
drag: 1,
rotVel: 0,
scale: {
start: .04,
end: new a(.15,.2),
lerp: new a(0,1)
},
alpha: {
start: 1,
end: 0,
lerp: new a(.75,1)
},
color: function() {
return h.rgb2hex(h.hsv2rgb(16711680, 1, h.random(.45, .8)))
}
},
rockChip: {
image: ["img/map/map-stone-01.svg"],
life: .5,
drag: new a(1,10),
rotVel: 0,
scale: {
start: new a(.04,.08),
end: new a(.01,.02),
lerp: new a(0,1)
},
alpha: {
start: 1,
end: 0,
lerp: new a(.95,1)
},
color: function() {
return h.rgb2hex(h.hsv2rgb(0, 0, h.random(.5, .75)))
}
},
rockFrag: {
image: ["img/map/map-stone-01.svg"],
life: new a(.8,1),
drag: new a(1,5),
rotVel: 0,
scale: {
start: new a(.07,.12),
end: new a(.05,.1),
lerp: new a(0,1)
},
alpha: {
start: 1,
end: 0,
lerp: new a(.9,1)
},
color: function() {
return h.rgb2hex(h.hsv2rgb(0, 0, h.random(.5, .75)))
}
},
woodChip: {
image: ["img/particles/part-woodchip-01.svg"],
life: new a(.5,1),
drag: new a(1,5),
rotVel: new a(3 * Math.PI,3 * Math.PI),
scale: {
start: new a(.04,.08),
end: new a(.01,.02),
lerp: new a(0,1)
},
alpha: {
start: 1,
end: 0,
lerp: new a(.9,1)
},
color: function() {
return h.rgb2hex(h.hsv2rgb(.05, 1, h.random(.35, .45)))
}
},
woodLog: {
image: ["img/particles/part-log-01.svg"],
life: new a(1,1.5),
drag: new a(1,5),
rotVel: new a(3 * Math.PI,3 * Math.PI),
scale: {
start: new a(.1,.2),
end: new a(.08,.18),
lerp: new a(0,1)
},
alpha: {
start: 1,
end: 0,
lerp: new a(.9,1)
},
color: function() {
return h.rgb2hex(h.hsv2rgb(.05, 1, h.random(.35, .45)))
}
},
woodPlank: {
image: ["img/particles/part-plank-01.svg"],
life: new a(1,1.5),
drag: new a(1,5),
rotVel: new a(3 * Math.PI,3 * Math.PI),
scale: {
start: new a(.1,.2),
end: new a(.08,.18),
lerp: new a(0,1)
},
alpha: {
start: 1,
end: 0,
lerp: new a(.9,1)
},
color: function() {
return h.rgb2hex(h.hsv2rgb(.05, 1, h.random(.25, .35)))
}
},
woodShard: {
image: ["img/particles/part-spark-02.svg"],
life: new a(1,1.5),
drag: new a(3,5),
rotVel: new a(3 * Math.PI,3 * Math.PI),
scale: {
start: new a(.06,.15),
end: new a(.02,.1),
lerp: new a(0,1)
},
alpha: {
start: 1,
end: 0,
lerp: new a(.9,1)
},
color: function() {
return h.rgb2hex(h.hsv2rgb(.05, 1, h.random(.25, .35)))
}
},
whitePlank: {
image: ["img/particles/part-plank-01.svg"],
life: new a(1,1.5),
drag: new a(1,5),
rotVel: new a(3 * Math.PI,3 * Math.PI),
scale: {
start: new a(.1,.2),
end: new a(.08,.18),
lerp: new a(0,1)
},
alpha: {
start: 1,
end: 0,
lerp: new a(.9,1)
},
color: function() {
return h.rgb2hex(h.hsv2rgb(.97, 0, h.random(.95, .97)))
}
},
redPlank: {
image: ["img/particles/part-plank-01.svg"],
life: new a(1,1.5),
drag: new a(1,5),
rotVel: new a(3 * Math.PI,3 * Math.PI),
scale: {
start: new a(.1,.2),
end: new a(.08,.18),
lerp: new a(0,1)
},
alpha: {
start: 1,
end: 0,
lerp: new a(.9,1)
},
color: function() {
return h.rgb2hex(h.hsv2rgb(.02, 1, h.random(.26, .28)))
}
},
shackFrag: {
image: ["img/particles/part-panel-01.svg"],
life: new a(.5,1.5),
drag: new a(1,5),
rotVel: new a(0,3 * Math.PI),
scale: {
start: new a(.25,.55),
end: new a(.08,.18),
lerp: new a(0,1)
},
alpha: {
start: 1,
end: 0,
lerp: new a(.9,1)
},
color: function() {
return h.rgb2hex(h.hsv2rgb(.1, .24, h.random(.38, .41)))
}
},
outhouseFrag: {
image: ["img/particles/part-panel-01.svg"],
life: new a(.5,1.5),
drag: new a(1,5),
rotVel: new a(0,3 * Math.PI),
scale: {
start: new a(.25,.55),
end: new a(.08,.18),
lerp: new a(0,1)
},
alpha: {
start: 1,
end: 0,
lerp: new a(.9,1)
},
color: function() {
return h.rgb2hex(h.hsv2rgb(.08, .79, h.random(.52, .54)))
}
},
outhouseChip: {
image: ["img/particles/part-woodchip-01.svg"],
life: new a(.5,1),
drag: new a(1,5),
rotVel: new a(3 * Math.PI,3 * Math.PI),
scale: {
start: new a(.04,.08),
end: new a(.01,.02),
lerp: new a(0,1)
},
alpha: {
start: 1,
end: 0,
lerp: new a(.9,1)
},
color: function() {
return h.rgb2hex(h.hsv2rgb(.08, .57, h.random(.4, .46)))
}
},
outhousePlank: {
image: ["img/particles/part-plank-01.svg"],
life: new a(1,1.5),
drag: new a(1,5),
rotVel: new a(3 * Math.PI,3 * Math.PI),
scale: {
start: new a(.1,.2),
end: new a(.08,.18),
lerp: new a(0,1)
},
alpha: {
start: 1,
end: 0,
lerp: new a(.9,1)
},
color: function() {
return h.rgb2hex(h.hsv2rgb(.08, .57, h.random(.4, .46)))
}
},
barrelChip: {
image: ["img/particles/part-spark-02.svg"],
life: .5,
drag: new a(1,10),
rotVel: 0,
scale: {
start: new a(.04,.08),
end: new a(.01,.02),
lerp: new a(0,1)
},
alpha: {
start: 1,
end: 0,
lerp: new a(.95,1)
},
color: function() {
return h.rgb2hex(h.hsv2rgb(.01, .02, h.random(.38, .41)))
}
},
barrelFrag: {
image: ["img/particles/part-spark-02.svg"],
life: new a(.8,1),
drag: new a(1,5),
rotVel: 0,
scale: {
start: new a(.07,.12),
end: new a(.05,.1),
lerp: new a(0,1)
},
alpha: {
start: 1,
end: 0,
lerp: new a(.9,1)
},
color: function() {
return h.rgb2hex(h.hsv2rgb(.01, .02, h.random(.38, .41)))
}
},
depositBoxGreyFrag: {
image: ["img/particles/part-plate-01.svg"],
life: new a(.5,1),
drag: new a(7,8),
rotVel: new a(0,3 * Math.PI),
scale: {
start: new a(.15,.25),
end: new a(.12,.2),
lerp: new a(0,1)
},
alpha: {
start: 1,
end: 0,
lerp: new a(.9,1)
},
color: function() {
return h.rgb2hex(h.hsv2rgb(0, 0, h.random(.36, .38)))
}
},
depositBoxGoldFrag: {
image: ["img/particles/part-plate-01.svg"],
life: new a(.5,1),
drag: new a(6,8),
rotVel: new a(0,3 * Math.PI),
scale: {
start: new a(.2,.35),
end: new a(.18,.25),
lerp: new a(0,1)
},
alpha: {
start: 1,
end: 0,
lerp: new a(.9,1)
},
color: function() {
return h.rgb2hex(h.hsv2rgb(.11, .84, h.random(.64, .66)))
}
},
goldChip: {
image: ["img/particles/part-spark-02.svg"],
life: .5,
drag: new a(1,10),
rotVel: 0,
scale: {
start: new a(.04,.08),
end: new a(.01,.02),
lerp: new a(0,1)
},
alpha: {
start: 1,
end: 0,
lerp: new a(.95,1)
},
color: function() {
return h.rgb2hex(h.hsv2rgb(.11, .84, h.random(.88, .9)))
}
},
greenChip: {
image: ["img/particles/part-spark-02.svg"],
life: .5,
drag: new a(1,10),
rotVel: 0,
scale: {
start: new a(.04,.08),
end: new a(.01,.02),
lerp: new a(0,1)
},
alpha: {
start: 1,
end: 0,
lerp: new a(.95,1)
},
color: function() {
return h.rgb2hex(h.hsv2rgb(.4, .18, h.random(.5, .62)))
}
},
whiteChip: {
image: ["img/particles/part-spark-02.svg"],
life: .5,
drag: new a(1,10),
rotVel: 0,
scale: {
start: new a(.04,.08),
end: new a(.01,.02),
lerp: new a(0,1)
},
alpha: {
start: 1,
end: 0,
lerp: new a(.95,1)
},
color: function() {
return h.rgb2hex(h.hsv2rgb(.97, 0, h.random(.95, .97)))
}
},
glassChip: {
image: ["img/particles/part-spark-02.svg"],
life: .5,
drag: new a(1,5),
rotVel: new a(1 * Math.PI,6 * Math.PI),
scale: {
start: new a(.04,.08),
end: new a(.01,.02),
lerp: new a(0,1)
},
alpha: {
start: 1,
end: 0,
lerp: new a(.95,1)
},
color: 8444415
},
tanChip: {
image: ["img/particles/part-woodchip-01.svg"],
life: new a(.5,1),
drag: new a(1,5),
rotVel: new a(3 * Math.PI,3 * Math.PI),
scale: {
start: new a(.04,.08),
end: new a(.01,.02),
lerp: new a(0,1)
},
alpha: {
start: 1,
end: 0,
lerp: new a(.9,1)
},
color: function() {
return h.rgb2hex(h.hsv2rgb(.1, .35, h.random(.48, .52)))
}
},
ltgreenChip: {
image: ["img/particles/part-woodchip-01.svg"],
life: new a(.5,1),
drag: new a(1,5),
rotVel: new a(3 * Math.PI,3 * Math.PI),
scale: {
start: new a(.04,.08),
end: new a(.01,.02),
lerp: new a(0,1)
},
alpha: {
start: 1,
end: 0,
lerp: new a(.9,1)
},
color: function() {
return h.rgb2hex(h.hsv2rgb(.2, .42, h.random(.38, .42)))
}
},
brickChip: {
image: ["img/particles/part-spark-02.svg"],
life: .5,
drag: new a(1,10),
rotVel: 0,
scale: {
start: new a(.04,.08),
end: new a(.01,.02),
lerp: new a(0,1)
},
alpha: {
start: 1,
end: 0,
lerp: new a(.95,1)
},
color: function() {
return h.rgb2hex(h.hsv2rgb(0, .71, h.random(.32, .34)))
}
},
redChip: {
image: ["img/particles/part-spark-02.svg"],
life: .5,
drag: new a(1,10),
rotVel: 0,
scale: {
start: new a(.04,.08),
end: new a(.01,.02),
lerp: new a(0,1)
},
alpha: {
start: 1,
end: 0,
lerp: new a(.95,1)
},
color: function() {
return h.rgb2hex(h.hsv2rgb(.98, 1, h.random(.52, .54)))
}
},
windowFrag: {
image: ["img/particles/part-spark-02.svg"],
life: new a(.4,.8),
drag: new a(1,4),
rotVel: new a(1 * Math.PI,6 * Math.PI),
scale: {
start: new a(.07,.12),
end: new a(.05,.1),
lerp: new a(0,1)
},
alpha: {
start: .8,
end: 0,
lerp: new a(.75,1)
},
color: 8444415
},
toiletFrag: {
image: ["img/particles/part-spark-02.svg"],
life: new a(.8,1),
drag: new a(1,5),
rotVel: 0,
scale: {
start: new a(.07,.12),
end: new a(.05,.1),
lerp: new a(0,1)
},
alpha: {
start: 1,
end: 0,
lerp: new a(.9,1)
},
color: function() {
return h.rgb2hex(h.hsv2rgb(.97, 0, h.random(.95, .97)))
}
},
leaf: {
image: ["img/particles/part-leaf-01.svg"],
life: new a(.5,1),
drag: new a(1,5),
rotVel: new a(3 * Math.PI,3 * Math.PI),
scale: {
start: new a(.04,.08),
end: new a(.01,.02),
lerp: new a(0,1)
},
alpha: {
start: 1,
end: 0,
lerp: new a(.9,1)
},
color: function() {
return h.rgb2hex(h.hsv2rgb(0, 0, h.random(.5, .75)))
}
},
"9mm": {
image: ["img/particles/part-shell-01.svg"],
life: new a(.5,.75),
drag: new a(3,4),
rotVel: new a(3 * Math.PI,3 * Math.PI),
scale: {
start: .0625,
end: .0325,
lerp: new a(0,1)
},
alpha: {
start: 1,
end: 0,
lerp: new a(.95,1)
},
color: function() {
return h.rgb2hex(h.hsv2rgb(0, 0, h.random(.9, .95)))
}
},
"762mm": {
image: ["img/particles/part-shell-02.svg"],
life: new a(.75,1),
drag: new a(1.5,2.5),
rotVel: new a(2.5 * Math.PI,2.5 * Math.PI),
scale: {
start: .075,
end: .045,
lerp: new a(0,1)
},
alpha: {
start: 1,
end: 0,
lerp: new a(.925,1)
},
color: function() {
return h.rgb2hex(h.hsv2rgb(0, 0, h.random(.9, .95)))
}
},
"556mm": {
image: ["img/particles/part-shell-04.svg"],
life: new a(.75,1),
drag: new a(1.5,2.5),
rotVel: new a(2.5 * Math.PI,2.5 * Math.PI),
scale: {
start: .075,
end: .045,
lerp: new a(0,1)
},
alpha: {
start: 1,
end: 0,
lerp: new a(.925,1)
},
color: function() {
return h.rgb2hex(h.hsv2rgb(0, 0, h.random(.9, .95)))
}
},
"12gauge": {
image: ["img/particles/part-shell-03.svg"],
life: new a(.5,.75),
drag: new a(1,2),
rotVel: new a(3 * Math.PI,3 * Math.PI),
scale: {
start: .1,
end: .05,
lerp: new a(0,1)
},
alpha: {
start: 1,
end: 0,
lerp: new a(.95,1)
},
color: function() {
return h.rgb2hex(h.hsv2rgb(0, 0, h.random(.9, .95)))
}
},
fragPin: {
image: ["img/particles/part-frag-pin-01.svg"],
life: new a(.5,.5),
drag: new a(.9,1),
rotVel: 0,
scale: {
start: .18,
end: .14,
lerp: new a(0,1)
},
alpha: {
start: 1,
end: 0,
lerp: new a(.5,1)
},
color: 16777215
},
fragLever: {
image: ["img/particles/part-frag-lever-01.svg"],
life: new a(.5,.5),
drag: new a(.9,1),
rotVel: 9 * Math.PI,
scale: {
start: .18,
end: .14,
lerp: new a(0,1)
},
alpha: {
start: 1,
end: 0,
lerp: new a(.5,1)
},
color: 16777215
},
explosionBurst: {
image: ["img/particles/part-frag-burst-01.svg"],
life: .5,
drag: 0,
rotVel: 0,
scale: {
start: 1,
end: 4,
lerp: new a(0,1)
},
alpha: {
start: 1,
end: 0,
lerp: new a(.75,1)
},
color: 8487297
},
explosionSmoke: {
image: ["img/particles/part-smoke-01.svg"],
life: new a(2,3),
drag: 0,
rotVel: new a(.25 * Math.PI,.5 * Math.PI),
scale: {
start: new a(.07,.12),
end: new a(.05,.1),
lerp: new a(0,1)
},
alpha: {
start: 1,
end: 0,
lerp: new a(.9,1)
},
color: function() {
return h.rgb2hex(h.hsv2rgb(0, 0, h.random(.9, .95)))
}
}
}
, g = {
smoke_barrel: {
particle: "explosionSmoke",
rate: new a(.2,.3),
radius: 0,
speed: new a(2,3),
angle: .1 * Math.PI,
maxCount: 99
}
};
o.prototype = {
init: function(e, t, i, a, o, s) {
this.active = !0,
this.ticker = 0,
(s || this.container).addChild(this.sprite),
this.parent = s,
this.pos = p.copy(t),
this.vel = p.copy(i),
this.rot = o,
this.def = e,
this.life = n(e.life),
this.drag = n(e.drag),
this.rotVel = n(e.rotVel) * (Math.random() < .5 ? -1 : 1),
this.rotDrag = n(e.drag) / 2,
this.scaleStart = n(e.scale.start) * a,
this.scaleEnd = n(e.scale.end) * a,
this.alphaStart = n(e.alpha.start),
this.alphaEnd = n(e.alpha.end);
var l = Array.isArray(e.image) ? e.image[Math.floor(Math.random() * e.image.length)] : e.image;
this.sprite.texture = c.Texture.fromImage(l),
this.sprite.tint = r(e.color),
this.sprite.visible = !0
},
free: function() {
this.active = !1,
this.sprite.visible = !1
}
},
s.prototype = {
init: function(e, t, i, a, n) {
this.active = !0,
this.enabled = !0,
this.type = e,
this.pos = p.copy(t),
this.dir = p.copy(i),
this.scale = a,
this.duration = n,
this.ticker = 0,
this.nextSpawn = 0,
this.spawnCount = 0
},
free: function() {
this.active = !1
},
stop: function() {
this.duration = this.ticker
}
},
l.prototype = {
addParticle: function(e, t, i, a, n, r) {
u(void 0 !== e);
for (var s = null, l = 0; l < this.particles.length; l++)
if (!this.particles[l].active) {
s = this.particles[l];
break
}
return s || (s = new o(this.display),
this.particles.push(s)),
a = void 0 !== a ? a : 1,
n = void 0 !== n ? n : Math.random() * Math.PI * 2,
s.init(e, t, i, a, n, r),
s
},
addEmitter: function(e, t, i, a, n) {
for (var r = null, o = 0; o < this.emitters.length; o++)
if (!this.emitters[o].active) {
r = this.emitters[o];
break
}
return r || (r = new s,
this.emitters.push(r)),
r.init(e, t, i, a, n),
r
},
update: function(e, t) {
for (var i = 0; i < this.emitters.length; i++) {
var a = this.emitters[i];
if (a.active && a.enabled) {
a.ticker;
a.ticker += e;
for (var r = g[a.type]; a.ticker > a.nextSpawn && a.spawnCount < r.maxCount; ) {
var o = a.scale * r.radius
, s = p.add(a.pos, p.mul(p.randomUnit(), Math.random() * o))
, l = p.rotate(a.dir, (Math.random() - .5) * r.angle)
, u = p.mul(l, n(r.speed))
, c = Math.random() * Math.PI * 2;
this.addParticle(m[r.particle], s, u, a.scale, c, null);
a.nextSpawn += n(r.rate),
a.spawnCount++
}
a.ticker >= a.duration && a.free()
}
}
for (var h = 0; h < this.particles.length; h++) {
var f = this.particles[h];
if (f.active) {
f.vel = p.mul(f.vel, 1 / (1 + e * f.drag)),
f.pos = p.add(f.pos, p.mul(f.vel, e)),
f.rotVel *= 1 / (1 + e * f.rotDrag),
f.rot += f.rotVel * e,
f.ticker += e;
var y = Math.min(f.ticker / f.life, 1)
, v = f.parent ? f.pos : t.pointToScreen(f.pos)
, b = d.remap(y, f.def.scale.lerp.min, f.def.scale.lerp.max, f.scaleStart, f.scaleEnd)
, x = d.remap(y, f.def.alpha.lerp.min, f.def.alpha.lerp.max, f.alphaStart, f.alphaEnd);
f.parent || (b = t.pixels(b)),
f.sprite.x = v.x,
f.sprite.y = v.y,
f.sprite.scale.x = b,
f.sprite.scale.y = b,
f.sprite.rotation = f.rot,
f.sprite.alpha = x,
y >= 1 && f.free()
}
}
}
},
e.exports = {
Defs: m,
ParticleBarn: l
}
},
EeFW: function(e, t, i) {
"use strict";
function a(e, t) {
if (!(e instanceof t))
throw new TypeError("Cannot call a class as a function")
}
var n = function() {
function e(e, t) {
for (var i = 0; i < t.length; i++) {
var a = t[i];
a.enumerable = a.enumerable || !1,
a.configurable = !0,
"value"in a && (a.writable = !0),
Object.defineProperty(e, a.key, a)
}
}
return function(t, i, a) {
return i && e(t.prototype, i),
a && e(t, a),
t
}
}()
, r = i("juYr")
, o = function() {
function e(t) {
a(this, e);
var i = r("<div/>", {
class: "ui-profiler-list"
})
, n = r("<div/>", {
class: "ui-profiler-list-header",
html: t
});
i.append(n);
var o = r("<ul/>");
i.append(o),
r("#ui-profiler-top-left").append(i),
this.elem = i
}
return n(e, [{
key: "free",
value: function() {
this.elem.remove(),
this.elem = null
}
}, {
key: "clear",
value: function() {
this.elem.children("ul").first().empty()
}
}, {
key: "add",
value: function(e, t) {
var i = this.elem.children("ul").first()
, a = r("<li/>").append(r("<div/>", {
class: "kv",
html: e
}));
return void 0 !== t && a.append(r("<div/>", {
class: "kv",
html: t
})),
i.append(a),
a
}
}]),
e
}()
, s = function() {
function e() {
a(this, e),
this.active = !1,
this.host = ""
}
return n(e, [{
key: "start",
value: function(e) {
var t = this;
this.active = !0,
this.ws = new WebSocket("ws://" + this.host + "/profiler?gameId=" + e),
this.ws.onerror = function(e) {
console.log("Profiler socket error", e),
t.ws.close()
}
,
this.ws.onopen = function() {
console.log("Connected to profiler server")
}
,
this.ws.onmessage = function(e) {
var i = JSON.parse(e.data);
t.setServerProfile(i)
}
,
this.ws.onclose = function() {
console.log("Profiler socket closed")
}
,
this.clientUi = new o("CLIENT"),
this.serverUi = new o("SERVER")
}
}, {
key: "stop",
value: function() {
this.active && (this.active = !1,
this.ws.close(),
this.clientUi.free(),
this.serverUi.free(),
this.clientUi = null,
this.serverUi = null)
}
}, {
key: "setClientProfile",
value: function(e) {
this.clientUi.clear();
var t = this.clientUi.add()
, i = r("<div/>");
t.append(i),
this.clientUi.add("--------------------------");
for (var a = 0; a < e.length; a++) {
var n = e[a]
, o = n.elapsed.toFixed(2)
, s = "&nbsp".repeat(2 * n.depth);
this.clientUi.add(s + n.desc, o)
}
}
}, {
key: "setServerProfile",
value: function(e) {
var t = e.stats;
this.serverUi.clear(),
this.serverUi.add("Elapsed", t.elapsed.toFixed(2) + " (" + t.elapsedMax.toFixed(2) + ") ms"),
this.serverUi.add("Recv", (t.avgRecv / 1024).toFixed(2) + " (" + (t.maxRecv / 1024).toFixed(2) + ") kbps"),
this.serverUi.add("Send", (t.avgSend / 1024).toFixed(2) + " (" + (t.maxSend / 1024).toFixed(2) + ") kbps"),
this.serverUi.add("--------------------------")
}
}]),
e
}();
e.exports = s
},
FRcz: function(e, t, i) {
"use strict";
var a = {
"@metadata": {
"last-updated": "2018-03-17",
locale: "fr"
},
"word-order": "svo",
"index-slogan": "2d Battle royale",
"index-region": "Région",
"index-north-america": "Amérique du Nord",
"index-europe": "Europe",
"index-asia": "Asie",
"index-players": "joueurs",
"index-play-solo": "Jouer en solo",
"index-play-duo": "Jouer en duo",
"index-play-squad": "Jouer en squad",
"index-create-team": "Créer une équipe",
"index-how-to-play": "Comment jouer",
"index-leave-team": "Quitter L’équipe",
"index-joining-team": "Rejoindre L’équipe",
"index-creating-team": "Création d'une équipe",
"index-invite-link": "Lien d'invitation",
"index-solo": "Solo",
"index-duo": "Duo",
"index-squad": "Squad",
"index-auto-fill": "Remplir",
"index-no-fill": "Ne pas remplir",
"index-waiting-for-leader": "En attente du chef pour débuter",
"index-play": "Jouer",
"index-featured-youtuber": "Youtubeur en vedette",
"index-settings": "Paramètres",
"index-high-resolution": "Haute résolution (cocher pour une meilleure qualité)",
"index-screen-shake": "Tremblement d'écran",
"index-master-volume": "Volume principal",
"index-sfx-volume": "Volume des effets",
"index-music-volume": "Volume de la musique",
"index-team-is-full": "L'équipe est pleine!",
"index-failed-joining-team": "Impossible de joindre l'équipe.",
"index-failed-creating-team": "Impossible de créer l'équipe.",
"index-failed-finding-game": "Impossible de trouver une partie.",
"index-failed-joining-game": "Impossible de joindre une partie.",
"index-lost-connection": "Connexion à l'équipe perdue.",
"index-host-closed": "L'hôte a fermé la connexion.",
"index-view-more": "Afficher plus",
"index-back-to-main": "Retour au menu principal",
"index-most-kills": "Plus de meutres",
"index-total-kills": "Total des meurtres",
"index-total-wins": "Total des victoires",
"index-top-5-percent": "Top 5 pour cent",
"index-kill-death-ratio": "Ratio E/M",
"index-for": "pour",
"index-today": "Aujourd'hui",
"index-this-week": "Cette semaine",
"index-all-time": "Tous les temps",
"index-top-100": "TOP 100",
"index-rank": "Rang",
"index-player": "Joueur",
"index-total-games": "Total des parties",
"index-controls": "Contrôles",
"index-movement": "Mouvement",
"index-movement-ctrl": "W, A, S, D",
"index-aim": "Viser",
"index-aim-ctrl": "Souris",
"index-punch": "Frapper",
"index-shoot": "Tirer",
"index-shoot-ctrl": "Clic gauche",
"index-change-weapons": "Changer d’armes",
"index-change-weapons-ctrl": "1 à 4 ou molette",
"index-stow-weapons": "Ranger les armes (Mode frapper)",
"index-stow-weapons-ctrl": "3 ou E",
"index-swap-weapons": "Arme précédente",
"index-swap-weapons-ctrl": "Q",
"index-reload": "Recharger",
"index-reload-ctrl": "R",
"index-scope-zoom": "Zoom du scope",
"index-scope-zoom-ctrl": "Clique gauche sur le zoom",
"index-pickup": "Prendre",
"index-loot": "Ramasser",
"index-revive": "Réanimer",
"index-pickup-ctrl": "F",
"index-use-medical": "Se soigner",
"index-use-medical-ctrl": "Clique gauche sur l'objet ou 7 à 0",
"index-drop-item": "Lâcher l'objet",
"index-drop-item-ctrl": "Clique droit sur l'ojhet",
"index-cancel-action": "Annuler l'action",
"index-cancel-action-ctrl": "X",
"index-view-map": "Voir la carte",
"index-view-map-ctrl": "M ou G",
"index-toggle-minimap": "Basculer la carte",
"index-toggle-minimap-ctrl": "V",
"index-use-ping": "Utiliser la roue de ping d'équipe",
"index-use-ping-ctrl": "Tenez C, puis tenez un clic droit et traînez la souris, puis lâchez le clic droit.",
"index-use-emote": "Utiliser la roue d'émotes",
"index-use-emote-ctrl": "Tenez un clic droit et traînez la souris, puis lâchez le clic droit.",
"index-tips-1-desc": "Le but de surviv.io est d'être le dernier joueur vivant. Vouz vivez seulement une fois par match - pas de respawn!",
"index-tips-2": "2D PUBG",
"index-tips-2-desc": 'Si vous avez joué d\'autres jeux type "battle royale" comme PUBG, Fortnite ou H1Z1, vous êtes à moitié chemin! Pensez à surviv.io comme PUBG en 2D.',
"index-tips-3": "Piller et tuer",
"index-tips-3-desc": "Vous commencerez le jeu avec pas d'objets à part d'un simple sac à dos. Naviguez le terrain pour trouver du butin: des armes, balles, viseurs et objets médicaux. Éliminez les autre joueurs et vous pouver prendre leurs objets!",
"index-tips-4": "Rouge = Mauvais!",
"index-tips-4-desc": "Les joueurs ne sont pas les seules choses qui peuvent vous tuer. La zone rouge meutrière va venir vers vous pas les côtés du terrain et inflige des dégâts de plus en plus dangereux. Gardez un oeil sur ca carte et restez saufs. ",
"game-alive": "En vie",
"game-reloading": "Rechargement",
"game-using": "Utilisation :",
"game-reviving": "Réanimation de",
"game-revive-teammate": "Réaminez votre coéquipier",
"game-equip": "Équiper",
"game-cancel": "Annuler",
"game-open-door": "Ouvrir la porte",
"game-close-door": "Fermer la porte",
"game-You": "Vous",
"game-you": "vous avez",
"game-themselves": "lui-même",
"game-yourself": "toi-même",
"game-you-died": "êtes mort",
"game-player-died": "est mort",
"game-with": "avec",
"game-knocked-out": "a assommé",
"game-killed": "tué",
"game-finally-killed": "a finalemaent tué",
"game-finally-bled-out": "est finalement mort",
"game-died-outside": "est mort hors de la zone sûre",
"game-the-red-zone": "La zone rouge",
"game-waiting-for-players": "En attente de joueurs",
"game-spectating": "En train de regarder",
"game-red-zone-advances": "La zone rouge avance dans",
"game-red-zone-advancing": "La zone rouge avance, allez vers la zone sûre!",
"game-seconds": "secondes",
"game-minutes": "minutes",
"game-minute": "minute",
"game-m": "m",
"game-s": "s",
"game-not-enough-space": "Pas assez d'espace!",
"game-item-already-owned": "Vous avez déjà cet objet!",
"game-item-already-equipped": "L'objet est déjà équipé",
"game-better-item-equipped": "Un meilleur objet est déjà équipé!",
"game-play-new-game": "Nouvelle partie",
"game-spectate": "Regarder",
"game-full-screen": "Plein écran",
"game-sound": "Son",
"game-quit-game": "Quitter la partie",
"game-return-to-game": "Retourner au jeu",
"game-hide-match-stats": "Masquer les statistiques",
"game-view-match-stats": "Voir les statistiques",
"game-previous-teammate": "Coéquipier précédent",
"game-next-teammate": "Coéquipier suivant",
"game-leave-game": "Quitter la partie",
"game-your-results": "Votre résultat",
"game-chicken": "Victoire! Les poulets sont à nous!",
"game-won-the-game": "a gagné la partie.",
"game-team-eliminated": "Votre équipe à été éliminée.",
"game-rank": "Rang",
"game-team-rank": "Rang d'équipe",
"game-team-kills": "Meurtres de l'équipe",
"game-kill": "Meurtre",
"game-kills": "Meurtres",
"game-damage-dealt": "Dégâts infligés",
"game-damage-taken": "Dégâts subis",
"game-survived": "Temps survécu",
"game-backpack00": "Poche",
"game-backpack01": "Petit sac à dos",
"game-backpack02": "Sac à dos régulier",
"game-backpack03": "Sac à dos militaire",
"game-bandage": "Pansements",
"game-bandage-tooltip": "Clique gauche pour restaurer 15 points de vie.",
"game-healing-tooltip": "Ne peut restaurer plus de 75 points de vie.",
"game-healthkit": "Kit médical",
"game-healthkit-tooltip": "Clique gauche pour restaurer 100 points de vie.",
"game-soda": "Soda",
"game-soda-tooltip": "Clique gauche pour augmenter l'adrénaline de 25.",
"game-adrenaline-tooltip": "L'adrénaline restaure la vie au fil du temps.",
"game-painkiller": "Pillules",
"game-painkiller-tooltip": "Clique gauche pour augmenter l'adrénaline de 50.",
"game-9mm": "9mm",
"game-9mm-tooltip": "Balles pour M9, Glock, MP5, MAC-10 et UMP9.",
"game-12gauge": "Calibre 12",
"game-12gauge-tooltip": "Balles pour M870, Saiga-12 et MP220.",
"game-762mm": "7.62mm",
"game-762mm-tooltip": "Balles pour AK-47, M39, Mosin Nagant, OT-38 et DP-28.",
"game-556mm": "5.56mm",
"game-556mm-tooltip": "Balles pour FAMAS, HK416, Mk 12 et M249.",
"game-chest01": "Veste de niveau 1",
"game-chest02": "Veste de niveau 2",
"game-chest03": "Veste de niveau 3",
"game-helmet01": "Casque de niveau 1",
"game-helmet02": "Casque de niveau 2",
"game-helmet03": "Casque de niveau 3",
"game-1xscope": "Viseur x1",
"game-2xscope": "Viseur x2",
"game-4xscope": "Viseur x4",
"game-8xscope": "Viseur x8",
"game-15xscope": "Viseur x15",
"game-level-1": "Niv. 1",
"game-level-2": "Niv. 2",
"game-level-3": "Niv. 3",
"game-outfitBase": "Skin de base",
"game-outfitRoyalFortune": "Fortune royale",
"game-outfitKeyLime": "Key Lime",
"game-outfitCobaltShell": "Coquille de cobalt",
"game-outfitCarbonFiber": "Fibre de carbone",
"game-outfitDarkGloves": "Le professionnel",
"game-outfitGhillie": "Ghillie Suit",
"game-outfitCamo": "Camouflage forêt",
"game-outfitRed": "Cible d'entrainement",
"game-outfitWhite": "Vengeur arctique",
"game-outfitWoodland": "Combat de forêt",
"game-ak47": "AK-47",
"game-dp28": "DP-28",
"game-mosin": "Mosin Nagant",
"game-m39": "M39 EMR",
"game-mp5": "MP5",
"game-mac10": "MAC-10",
"game-ump9": "UMP9",
"game-m870": "M870",
"game-mp220": "MP220",
"game-saiga": "Saiga-12",
"game-m9": "M9",
"game-glock": "Glock 18C",
"game-ot38": "OT-38",
"game-famas": "FAMAS",
"game-hk416": "HK416",
"game-mk12": "Mk 12 SPR",
"game-m249": "M249",
"game-frag": "Grenade à fragmentation",
"game-hud-frag": "Frag.",
"game-smoke": "Grenade fumigène",
"game-hud-smoke": "Fumi.",
"game-incendiary": "Grenade à incendie",
"game-barrel_01": "un baril",
"game-silo_01": "un silo",
"game-oven_01": "un four"
};
e.exports = a
},
FT2U: function(e, t, i) {
"use strict";
function a(e, t) {
if (!(e instanceof t))
throw new TypeError("Cannot call a class as a function")
}
var n = function() {
function e(e, t) {
for (var i = 0; i < t.length; i++) {
var a = t[i];
a.enumerable = a.enumerable || !1,
a.configurable = !0,
"value"in a && (a.writable = !0),
Object.defineProperty(e, a.key, a)
}
}
return function(t, i, a) {
return i && e(t.prototype, i),
a && e(t, a),
t
}
}()
, r = i("juYr")
, o = i("v8aM")
, s = o.EmoteType
, l = o.EmoteData
, u = i("85i3")
, c = i("Jr6A")
, d = function() {
function e(t) {
a(this, e),
this.config = t,
this.selectedEmote = {
prevSlot: "",
img: "",
id: 0
},
this.unlockTypes = {
twitter: {
locked: "Follow to unlock GG, Question and Tombstone emotes!",
unlocked: "GG, Question and Tombstone emotes unlocked!",
config: "twitterFollow"
},
youtube: {
locked: "Subscribe to unlock Joy, Sob and Thinking emotes!",
unlocked: "Joy, Sob and Thinking emotes unlocked!",
config: "youtubeSubscribe"
},
facebook: {
locked: "Like to unlock flag emotes!",
unlocked: "Flag emotes unlocked!",
config: "facebookLike"
}
}
}
return n(e, [{
key: "init",
value: function() {
var e = this
, t = this;
r("#customize-emote-wheel, #customize-emote-autos").find(".ui-emote-parent").each(function(t, i) {
var a = r(i)
, n = e.config.get(a.data("slot"))
, o = l[n]
, s = {
img: "",
id: 0
};
void 0 != o && (s = {
img: o.texture,
id: n
}),
a.find(".customize-emote-image").data("id", s.id),
a.find(".customize-emote-image").css("background-image", "url(" + s.img + ")")
});
var i = Object.keys(l);
i.sort(function(e, t) {
return l[e].category - l[t].category || e - t
});
var a = [];
for (var n in s)
for (var o = 0; o < i.length; o++)
s[n] != i[o] || a.push(n);
for (var d = 0; d < i.length; d++) {
var h = a[i[d]];
if (s.hasOwnProperty(h)) {
var p = l[s[h]]
, m = p.noCustom || !1;
if (!p.teamOnly && !m) {
var g = !1
, f = "";
p.twitterFollow && (g = !0,
f = "twitter"),
p.youtubeSubscribe && (g = !0,
f = "youtube"),
p.facebookLike && (g = !0,
f = "facebook");
var y = "customize-list-item";
y += g ? " customize-list-item-locked" : " customize-list-item-unlocked";
var v = r("<div/>", {
class: y,
"data-lock-reason": f
});
v.append(r("<div/>", {
class: "customize-emote-image",
style: "background-image: url(" + p.texture + ")",
draggable: !g,
"data-id": s[h]
})),
r("#modal-customize-list").append(v)
}
}
}
r(".customize-list-item-locked").hover(function() {
r('.tooltiptext[data-lock-reason="' + r(this).data("lock-reason") + '"]').css("visibility", "visible")
}, function() {
r('.tooltiptext[data-lock-reason="' + r(this).data("lock-reason") + '"]').css("visibility", "hidden")
}),
this.selectableSlots = r(".customize-col, .customize-list-item"),
this.emoteSlots = r(".customize-col"),
this.highlightedSlots = this.emoteSlots.siblings(".ui-emote-hl"),
this.highlightOpacityMin = .4,
this.emoteSelected = !1,
this.selectableSlots.on("mouseup", function() {
if (!r(this).hasClass("customize-list-item-locked"))
return t.emoteSelected && !r(this).hasClass("customize-list-item") ? void (t.emoteSelected = !1) : void t.selectEmote(r(this))
}),
this.selectableSlots.on("dragstart", function(e) {
if (!r(this).hasClass("customize-list-item-locked") && (t.selectEmote(r(this)),
!c.detectIE(!0))) {
var i = document.createElement("img");
i.src = t.selectedEmote.img.replace("url(", "").replace(")", "").replace(/\"/gi, ""),
e.originalEvent.dataTransfer.setDragImage(i, 64, 64)
}
}),
this.emoteSlots.on("drop", function(e) {
e.originalEvent.preventDefault();
var i = r(this).parent();
t.updateSlot(i, t.selectedEmote.img, t.selectedEmote.id),
t.emoteSelected = !1
}),
this.emoteSlots.on("mousedown", function(e) {
if (t.emoteSelected) {
e.stopPropagation();
var i = r(this).parent();
t.updateSlot(i, t.selectedEmote.img, t.selectedEmote.id)
}
}),
this.emoteSlots.on("dragover", function(e) {
e.originalEvent.preventDefault(),
r(this).parent().find(".ui-emote-hl").css("opacity", 1)
}),
this.emoteSlots.on("dragleave", function(e) {
e.originalEvent.preventDefault(),
r(this).parent().find(".ui-emote-hl").css("opacity", t.highlightOpacityMin)
}),
r(document).on("dragend", function(e) {
e.originalEvent.preventDefault(),
t.highlightedSlots.css({
display: "none",
opacity: 0
})
}),
r(".ui-emote-auto-trash").click(function() {
var e = r(this).parent();
t.updateSlot(e, "", 1)
});
for (var b in this.unlockTypes)
if (this.unlockTypes.hasOwnProperty(b)) {
var x = this.unlockTypes[b];
this.config.get(x.config) && this.unlockEmotes(b)
}
r(".btn-social-unlock").click(function() {
if (r(this).hasClass("btn-social-unlocked"))
return !1;
var e = r(this).data("lock-reason");
t.unlockEmotes(e),
u.storeGeneric("loadouts", "socialUnlock/emotes/" + e)
})
}
}, {
key: "selectEmote",
value: function(e) {
var t = e.hasClass("customize-list-item");
this.emoteSelected = !0;
var i = t ? e : e.parent()
, a = i.find(".customize-emote-image");
if (this.selectedEmote = {
prevSlot: t ? null : i,
img: a.css("background-image"),
id: a.data("id")
},
this.highlightedSlots.css({
display: "block",
opacity: this.highlightOpacityMin
}),
this.selectableSlots.removeClass("customize-list-item-selected"),
t)
e.addClass("customize-list-item-selected");
else {
i.find(".ui-emote-hl").css("opacity", 1)
}
}
}, {
key: "updateSlot",
value: function(e, t, i) {
var a = this.selectedEmote.prevSlot;
if (this.selectedEmote = {},
a) {
var n = e.find(".customize-emote-image");
this.updateSlot(a, n.css("background-image"), n.data("id"))
}
var r = e.find(".customize-emote-slot");
r.data("id", i),
r.css("background-image", t),
e.find(".ui-emote-hl").css("display", "none"),
this.config.set(e.data("slot"), i),
this.selectableSlots.removeClass("customize-list-item-selected"),
this.highlightedSlots.css({
display: "none",
opacity: 0
})
}
}, {
key: "unlockEmotes",
value: function(e) {
this.unlockTypes[e].unlocked;
r('.btn-social-unlock[data-lock-reason="' + e + '"]').addClass("btn-social-unlocked");
var t = r('.customize-list-item-locked[data-lock-reason="' + e + '"]');
t.addClass("customize-list-item-unlocked").removeClass("customize-list-item-locked"),
t.find(".customize-emote-image").attr("draggable", !0),
this.config.set(this.unlockTypes[e].config, !0),
r(".customize-list-item-unlocked").off("mouseenter"),
r(".customize-list-item-unlocked").off("mouseleave"),
r(".customize-list-item-locked").on("mouseenter", function() {
r('.tooltiptext[data-lock-reason="' + r(this).data("lock-reason") + '"]').css("visibility", "visible")
}),
r(".customize-list-item-locked").on("mouseleave", function() {
r('.tooltiptext[data-lock-reason="' + r(this).data("lock-reason") + '"]').css("visibility", "hidden")
})
}
}]),
e
}();
e.exports = d
},
FyxX: function(e, t, i) {
"use strict";
function a(e, t) {
if (!(e instanceof t))
throw new TypeError("Cannot call a class as a function")
}
var n = function() {
function e(e, t) {
for (var i = 0; i < t.length; i++) {
var a = t[i];
a.enumerable = a.enumerable || !1,
a.configurable = !0,
"value"in a && (a.writable = !0),
Object.defineProperty(e, a.key, a)
}
}
return function(t, i, a) {
return i && e(t.prototype, i),
a && e(t, a),
t
}
}()
, r = i("gKxX")
, o = i("Bk7F")
, s = i("/2+T")
, l = i("r4ug")
, u = i("b/6L")
, c = i("dT1u")
, d = function() {
function e(t) {
a(this, e),
this.sprite = new r.Sprite,
this.sprite.anchor = new r.Point(.5,.5),
this.sprite.visible = !1,
t.display.addChild(this.sprite)
}
return n(e, [{
key: "init",
value: function() {
this.imgScale = 1
}
}, {
key: "free",
value: function() {
this.sprite.visible = !1
}
}, {
key: "updateData",
value: function(e, t, i) {
var a = this.sprite
, n = o.Defs[e.type];
if (this.type = e.type,
this.pos = s.copy(e.pos),
this.rad = n.rad,
this.imgScale = n.img.scale,
i) {
var l = n.img;
a.texture = r.Texture.fromImage(l.sprite),
a.tint = l.tint,
a.alpha = 1,
a.visible = !0,
this.isNew = !0,
this.inWater = !1,
this.spriteAlpha = l.alpha
}
}
}]),
e
}()
, h = function() {
function e() {
a(this, e),
this.display = new r.Container,
this.decalPool = new c.Pool(d,this)
}
return n(e, [{
key: "update",
value: function(e, t) {
for (var i = this.decalPool.getPool(), a = 0; a < i.length; a++) {
var n = i[a];
if (n.active && n.isNew) {
n.isNew = !1;
var r = t.getGroundSurface(n.pos);
n.inWater = "water" == r
}
}
}
}, {
key: "render",
value: function(e) {
for (var t = this.decalPool.getPool(), i = 0; i < t.length; i++) {
var a = t[i];
if (a.active) {
var n = e.pointToScreen(a.pos)
, r = e.pixels(1 * a.imgScale);
a.sprite.x = n.x,
a.sprite.y = n.y,
a.sprite.scale.x = r,
a.sprite.scale.y = r,
a.sprite.rotation = 0,
a.sprite.alpha = a.spriteAlpha * (a.inWater ? .3 : 1),
u.debug && l.addCircle(a.pos, a.rad, 16776960, 0)
}
}
}
}]),
e
}();
e.exports = {
DecalBarn: h
}
},
GtPS: function(e, t, i) {
"use strict";
function a() {
this.pos = r.create(0, 0),
this.ppu = 16,
this.zoom = 1.5,
this.targetZoom = 1.5,
this.screenWidth = 1,
this.screenHeight = 1,
this.shakeEnabled = !0,
this.shakeInt = 0
}
var n = i("0od3")
, r = i("/2+T");
a.prototype = {
z: function() {
return this.ppu * this.zoom
},
pointToScreen: function(e) {
return {
x: .5 * this.screenWidth + (e.x - this.pos.x) * this.z(),
y: .5 * this.screenHeight - (e.y - this.pos.y) * this.z()
}
},
screenToPoint: function(e) {
return {
x: this.pos.x + (e.x - .5 * this.screenWidth) / this.z(),
y: this.pos.y + (.5 * this.screenHeight - e.y) / this.z()
}
},
pixels: function(e) {
return e * this.zoom
},
scaleToScreen: function(e) {
return e * this.z()
},
setShakeEnabled: function(e) {
this.shakeEnabled = e
},
addShake: function(e, t) {
var i = r.length(r.sub(this.pos, e))
, a = n.delerp(i, 40, 10) * t;
this.shakeInt = Math.max(this.shakeInt, a)
},
applyShake: function() {
this.shakeEnabled && (this.pos = r.add(this.pos, r.mul(r.randomUnit(), this.shakeInt))),
this.shakeInt = 0
}
},
e.exports = a
},
Jr6A: function(e, t, i) {
"use strict";
function a(e, t) {
t || (t = window.location.href),
e = e.replace(/[\[\]]/g, "\\$&");
var i = new RegExp("[?&]" + e + "(=([^&#]*)|&|#|$)")
, a = i.exec(t);
if (a)
return a[2] ? decodeURIComponent(a[2].replace(/\+/g, " ")) : ""
}
function n(e) {
var t = e.trim();
return t.length > g.kNameMaxLen && (t = t.substring(0, g.kNameMaxLen)),
t
}
function r(e, t, i) {
var a = y.getContext("2d");
a.font = t;
for (var n = e.length, r = e; n > 0; ) {
if (a.measureText(r).width <= i)
break;
r = e.substring(0, --n) + "…"
}
return r
}
function o(e) {
return void 0 === e ? "undefined" : null === e ? "null" : JSON.stringify(e)
}
function s() {
var e = window.location.hostname;
return f.dev || e.indexOf("surviv.io") >= 0 || e.indexOf("localhost") >= 0
}
function l() {
var e = arguments.length > 0 && void 0 !== arguments[0] && arguments[0]
, t = window.navigator.userAgent
, i = t.indexOf("MSIE ")
, a = t.indexOf("Trident/")
, n = t.indexOf("Edge/");
return i > 0 || a > 0 || e && n > 0
}
function u() {
var e = navigator.language || navigator.userLanguage;
e = e.toLowerCase();
for (var t = ["pt", "de", "es", "fr", "ko", "ru", "en"], i = 0; i < t.length; i++)
if (-1 != e.indexOf(t[i])) {
e = t[i];
break
}
for (var a = ["da", "de", "en", "es", "fr", "it", "nl", "ko", "pl", "pt", "ru", "sv", "th", "zh-cn", "zh-tw"], n = 0; n < a.length; n++)
if (-1 != e.indexOf(a[n]))
return e = a[n];
return ""
}
function c(e) {
var t = document.documentElement;
document.fullscreenElement || document.mozFullScreenElement || document.webkitFullscreenElement || document.msFullscreenElement || e ? document.exitFullscreen ? document.exitFullscreen() : document.msExitFullscreen ? document.msExitFullscreen() : document.mozCancelFullScreen ? document.mozCancelFullScreen() : document.webkitExitFullscreen && document.webkitExitFullscreen() : t.requestFullscreen ? t.requestFullscreen() : t.msRequestFullscreen ? (t = document.body,
t.msRequestFullscreen()) : t.mozRequestFullScreen ? t.mozRequestFullScreen() : t.webkitRequestFullscreen && t.webkitRequestFullscreen()
}
function d() {
return void 0 !== a("debug") || !1
}
function h(e, t) {
!function i(a, n) {
if (a >= n)
return void t("full");
var r = function() {
setTimeout(function() {
i(a + 1, n)
}, 250)
};
m.ajax({
type: "POST",
url: "/find_game",
data: JSON.stringify(e),
contentType: "application/json; charset=utf-8",
timeout: 1e4,
success: function(e, i) {
"full" == e.err ? r() : e.err ? t(e.err) : void 0 === e.hosts || void 0 === e.addrs ? r() : t(null, e)
},
error: function(e) {
r()
}
})
}(0, 3)
}
function p(e, t, i, a) {
var n = "https:" == window.location.protocol
, r = n ? "wss:" : "ws:"
, o = n ? i.hosts : i.addrs;
o = o || [];
for (var s = [], l = 0; l < o.length; l++)
s.push(r + "//" + o[l] + "/play?gid=" + i.gameId);
!function i(n) {
var r = function() {
i(n)
};
if (n.length > 0) {
var o = n.shift();
e.tryJoinGame(t, o, r)
} else
a()
}(s)
}
var m = i("juYr")
, g = i("yp2f")
, f = i("b/6L")
, y = (i("85i3"),
document.createElement("canvas"));
e.exports = {
getParameterByName: a,
sanitizeNameInput: n,
truncateString: r,
varToString: o,
authLocation: s,
detectIE: l,
detectLanguage: u,
toggleFullScreen: c,
logDebug: d,
findGame: h,
joinGame: p
}
},
K7EQ: function(e, t, i) {
"use strict";
e.exports = {
background: 2118510,
water: 3310251,
beach: 13480795,
grass: 8433481
}
},
KdTN: function(e, t, i) {
"use strict";
var a = {
"@metadata": {
"last-updated": "2018-01-28",
locale: "de"
},
"word-order": "sov",
"index-slogan": "2d Battle Royale",
"index-region": "Region",
"index-north-america": "Nordamerika",
"index-europe": "Europa",
"index-asia": "Asien",
"index-players": "Spieler",
"index-play-solo": "Solo spielen",
"index-play-duo": "Duo spielen",
"index-play-squad": "Squad spielen",
"index-create-team": "Team erstellen",
"index-how-to-play": "Wie man spielt",
"index-leave-team": "Team verlassen",
"index-joining-team": "Beitritt zum Team",
"index-creating-team": "Team erstellen",
"index-invite-link": "Einladungslink",
"index-solo": "Solo",
"index-duo": "Duo",
"index-squad": "Squad",
"index-auto-fill": "Auffüllen",
"index-no-fill": "Kein Füllen",
"index-waiting-for-leader": "Warten auf den Anführer, um das Spiel zu starten",
"index-play": "Spielen",
"index-featured-youtuber": "Vorgestellter YouTuber",
"index-settings": "Einstellungen",
"index-high-resolution": "Hohe Auflösung (Aktivieren zur Steigerung der visuellen Qualität)",
"index-screen-shake": "Bildschirmschütteln",
"index-master-volume": "Gesamtlautstärke",
"index-sfx-volume": "Effektlautstärke",
"index-music-volume": "Musiklautstärke",
"index-team-is-full": "Das Team ist voll!",
"index-failed-joining-team": "Fehlgeschlagener Eintritt ins Team.",
"index-failed-creating-team": "Das Erstellen eines Teams ist fehlgeschlagen.",
"index-failed-finding-game": "Die Spielsuche ist fehlgeschlagen.",
"index-failed-joining-game": "Fehlgeschlagener Beitritt zum Spiel.",
"index-lost-connection": "Verbindung zum Team verloren.",
"index-host-closed": "Serververbindung geschlossen.",
"index-view-more": "Mehr anzeigen",
"index-back-to-main": "Zurück zum Hauptmenü",
"index-most-kills": "Meiste Tötungen",
"index-total-kills": "Gesamt Tötungen",
"index-total-wins": "Gesamtgewinne",
"index-top-5-percent": "Top 5 Prozent",
"index-kill-death-ratio": "Kill-Tod-Verhältnis",
"index-for": "für",
"index-today": "Heute",
"index-this-week": "Diese Woche",
"index-all-time": "Aller Zeiten",
"index-top-100": "TOP 100",
"index-rank": "Rang",
"index-player": "Spieler",
"index-total-games": "Gesamtanzahl Spiele",
"index-controls": "Steuerung",
"index-movement": "Bewegung",
"index-movement-ctrl": "W, A, S, D",
"index-aim": "Zielen",
"index-aim-ctrl": "Maus",
"index-punch": "Schlagen",
"index-shoot": "Schießen",
"index-shoot-ctrl": "Links-Klick",
"index-change-weapons": "Waffen wechseln",
"index-change-weapons-ctrl": "1 bis 4 oder Mausrad",
"index-stow-weapons": "Waffen verstauen (Schlag-Modus)",
"index-stow-weapons-ctrl": "3 oder E",
"index-swap-weapons": "Wechsel zu vorherigen Waffe",
"index-swap-weapons-ctrl": "Q",
"index-reload": "Nachladen",
"index-reload-ctrl": "R",
"index-scope-zoom": "Zielfernrohr Zoom",
"index-scope-zoom-ctrl": "Linksklick auf Zoom",
"index-pickup": "aufnehmen",
"index-loot": "Beute",
"index-revive": "wiederbeleben",
"index-pickup-ctrl": "F",
"index-use-medical": "Medizinisches Item verwenden",
"index-use-medical-ctrl": "Linksklick auf Item oder 7 bis 0",
"index-drop-item": "Item ablegen",
"index-drop-item-ctrl": "Rechtsklick auf Item",
"index-cancel-action": "Aktion abbrechen",
"index-cancel-action-ctrl": "X",
"index-view-map": "Karte anzeigen",
"index-view-map-ctrl": "M oder G",
"index-toggle-minimap": "Minimap umschalten",
"index-toggle-minimap-ctrl": "V",
"game-alive": "Am Leben",
"game-reloading": "Nachladen",
"game-using": "Benutzen",
"game-reviving": "Wiederbelebung",
"game-revive-teammate": "Spieler wiederbeleben",
"game-equip": "Equip",
"game-cancel": "Beenden",
"game-You": "You",
"game-you": "you",
"game-themselves": "themselves",
"game-yourself": "yourself",
"game-you-died": "died",
"game-player-died": "died",
"game-with": "with",
"game-knocked-out": "knocked out",
"game-killed": "killed",
"game-finally-killed": "finally killed",
"game-finally-bled-out": "finally bled out",
"game-died-outside": "died outside the safe zone",
"game-the-red-zone": "The red zone",
"game-waiting-for-players": "Warten auf Spieler",
"game-spectating": "Zuschauen",
"game-red-zone-advances": "Rote Zone schreitet voran in",
"game-red-zone-advancing": "Rote Zone rückt vor, in die sichere Zone!",
"game-seconds": "Sekunden",
"game-minutes": "Minuten",
"game-minute": "Minute",
"game-m": "m",
"game-s": "s",
"game-not-enough-space": "Nicht genügend Platz!",
"game-item-already-owned": "Item bereits in Besitz!",
"game-item-already-equipped": "Item bereits ausgerüstet!",
"game-better-item-equipped": "Besseres Item ausgestattet!",
"game-play-new-game": "Neues Spiel starten",
"game-spectate": "Zuschauen",
"game-full-screen": "Vollbild",
"game-sound": "Ton",
"game-quit-game": "Spiel beenden",
"game-return-to-game": "Zurück zum Spiel",
"game-hide-match-stats": "Match-Statistiken ausblenden",
"game-view-match-stats": "Match-Statistiken anzeigen",
"game-previous-teammate": "Vorheriger Teamkollege",
"game-next-teammate": "Nächster Teamkollege",
"game-spectate-previous": "Vorheriger",
"game-spectate-next": "Nächster",
"game-leave-game": "Spiel verlassen",
"game-your-results": "Ihre Ergebnisse",
"game-chicken": "Gewinner Gewinner Hühnchen-Dinner!",
"game-won-the-game": "gewonnen.",
"game-team-eliminated": "Ihr Team wurde besiegt.",
"game-rank": "Rang",
"game-team-rank": "Team Rang",
"game-team-kills": "Team Tötungen",
"game-kill": "Tötung",
"game-kills": "Tötungen",
"game-damage-dealt": "Verursachter Schaden",
"game-damage-taken": "Erhaltener Schaden",
"game-survived": "Überlebt",
"game-backpack00": "Beutel",
"game-backpack01": "Kleiner Rucksack",
"game-backpack02": "Normaler Rucksack",
"game-backpack03": "Militärrucksack",
"game-bandage": "Bandage",
"game-bandage-tooltip": "Klicken Sie mit der linken Maustaste, um 15 Lebenspunkte wiederherzustellen.",
"game-healing-tooltip": "Kann nicht mehr als 75 Lebenspunkte heilen.",
"game-healthkit": "Erste Hilfe Tasche",
"game-healthkit-tooltip": "Klicken Sie mit der linken Maustaste, um 100 Lebenspunkte wiederherzustellen.",
"game-soda": "Soda",
"game-soda-tooltip": "Klicke mit der linken Maustaste, um den Adrenalinspiegel um 25 zu erhöhen.",
"game-adrenaline-tooltip": "Adrenalin stellt die Gesundheit im Laufe der Zeit wieder her.",
"game-painkiller": "Schmerzmittel",
"game-painkiller-tooltip": "Klicken Sie mit der linken Maustaste, um den Adrenalinspiegel um 50 zu erhöhen.",
"game-9mm": "9mm",
"game-9mm-tooltip": "Munition für M9, Glock, MP5, MAC-10 und UMP9.",
"game-12gauge": "12er Kaliber",
"game-12gauge-tooltip": "Munition für M870, Saiga-12 und MP220.",
"game-762mm": "7.62mm",
"game-762mm-tooltip": "Munition für AK-47, M39, Mosin Nagant, OT-38 und DP-28.",
"game-556mm": "5.56mm",
"game-556mm-tooltip": "Munition für FAMAS, HK416, Mk 12 und M249.",
"game-chest01": "Level 1 Weste",
"game-chest02": "Level 2 Weste",
"game-chest03": "Level 3 Weste",
"game-helmet01": "Level 1 Helm",
"game-helmet02": "Level 2 Helm",
"game-helmet03": "Level 3 Helm",
"game-1xscope": "1x Visier",
"game-2xscope": "2x Visier",
"game-4xscope": "4x Visier",
"game-8xscope": "8x Visier",
"game-15xscope": "15x Visier",
"game-level-1": "Lvl. 1",
"game-level-2": "Lvl. 2",
"game-level-3": "Lvl. 3",
"game-outfitBase": "Basic Outfit",
"game-outfitRoyalFortune": "Royal Fortune",
"game-outfitKeyLime": "Key Lime",
"game-outfitCobaltShell": "Cobalt Shell",
"game-outfitCarbonFiber": "Carbon Fiber",
"game-outfitDarkGloves": "The Professional",
"game-outfitGhillie": "Ghillie Suit",
"game-outfitCamo": "Forest Camo",
"game-outfitRed": "Target Practice",
"game-outfitWhite": "Arctic Avenger",
"game-ak47": "AK-47",
"game-dp28": "DP-28",
"game-mosin": "Mosin Nagant",
"game-m39": "M39 EMR",
"game-mp5": "MP5",
"game-mac10": "MAC-10",
"game-ump9": "UMP9",
"game-m870": "M870",
"game-mp220": "MP220",
"game-saiga": "Saiga-12",
"game-m9": "M9",
"game-glock": "Glock 18C",
"game-ot38": "OT-38",
"game-barrel_01": "a barrel",
"game-silo_01": "a silo"
};
e.exports = a
},
LLDW: function(e, t, i) {
"use strict";
function a(e) {
this.localization = e,
this.timeout = 1e4,
this.leaderboardActive = 0,
this.leaderboardFront = n("#leaderboard-front"),
this.leaderboardMain = n("#leaderboard-main"),
this.leaderboardSpinners = n(".leaderboard-spinner"),
this.leaderboardPlayers = n(".leaderboard-players"),
this.leaderboardButtons = n(".btn-leaderboards"),
this.leaderboardMode = n(".leaderboard-mode"),
this.leaderboardStats = n(".leaderboard-stat"),
this.leaderboardIntervals = n(".leaderboard-interval"),
this.frontMode = this.leaderboardFront.find(".leaderboard-mode"),
this.frontStat = this.leaderboardFront.find(".leaderboard-stat"),
this.frontInterval = this.leaderboardFront.find(".leaderboard-interval"),
this.mainMode = this.leaderboardMain.find(".leaderboard-mode"),
this.mainStat = this.leaderboardMain.find(".leaderboard-stat"),
this.mainInterval = this.leaderboardMain.find(".leaderboard-interval"),
this.rotationSetInterval = null,
this.currentDisplayedModeIdx = 0,
n("#min-games").html("5 games"),
this.setLanguage();
var t = this
, i = function(e) {
n("html, body").css("overflow-y", e ? "scroll" : "hidden")
};
n(".leaderboard-mode, .leaderboard-stat, .leaderboard-interval").change(function() {
t.getLeaderboardData(!0),
clearInterval(t.rotationSetInterval)
}),
n("#btn-leaderboard-to-main").on("click", function() {
n("#start-main").fadeOut(100, function() {
t.setActiveBoard(1),
i(!0),
n("#start-menu-wrapper").css("height", "0%"),
n("#start-overlay").addClass("start-overlay-darken"),
n(".leaderboard").fadeIn(100),
t.getLeaderboardData(!0),
clearInterval(t.rotationSetInterval)
})
}),
n("#btn-leaderboard-to-front").on("click", function() {
n(".leaderboard").fadeOut(100, function() {
t.setActiveBoard(0),
i(!1),
n("#start-menu-wrapper").css("height", "100%"),
n("#start-overlay").removeClass("start-overlay-darken"),
n("#start-main").fadeIn(100)
})
})
}
var n = i("juYr")
, r = i("Tf6H");
a.prototype = {
setActiveBoard: function(e) {
this.leaderboardActive = e,
1 == this.leaderboardActive && (this.mainStat.val(this.frontStat.val()),
this.mainInterval.val(this.frontInterval.val()))
},
setLanguage: function() {
var e = "";
this.modeOptions = {
1: this.localization.translate("index-solo"),
2: this.localization.translate("index-duo"),
4: this.localization.translate("index-squad")
},
n.each(this.modeOptions, function(t, i) {
e += '<option value="' + t + '">' + i + "</option>"
}),
this.leaderboardMode.html(e),
this.statOptions = {
most_kills: this.localization.translate("index-most-kills"),
total_kills: this.localization.translate("index-total-kills"),
total_wins: this.localization.translate("index-total-wins"),
top5_pct: this.localization.translate("index-top-5-percent"),
kdr: this.localization.translate("index-kill-death-ratio")
},
e = "",
n.each(this.statOptions, function(t, i) {
e += '<option value="' + t + '">' + i + "</option>"
}),
this.leaderboardStats.html(e),
this.intervalOptions = {
daily: this.localization.translate("index-today"),
weekly: this.localization.translate("index-this-week"),
all: this.localization.translate("index-all-time")
},
e = "",
n.each(this.intervalOptions, function(t, i) {
e += '<option value="' + t + '">' + i + "</option>"
}),
this.leaderboardIntervals.html(e),
this.leaderboardFront.find(".leaderboard-headers").html(e);
var t = this.leaderboardMain.find(".leaderboard-headers");
e = "<th class='leaderboard-header-zero'>" + this.localization.translate("index-rank").toUpperCase() + "</th>",
e += "<th class='leaderboard-header-one'>" + this.localization.translate("index-player").toUpperCase() + "</th>",
e += "<th class='leaderboard-header-two'></th>",
e += "</th><th class='leaderboard-header-three'>" + this.localization.translate("index-total-games").toUpperCase() + "</th>",
t.html(e)
},
leaderboardLoading: function(e) {
this.leaderboardSpinners.css("display", e ? "block" : "none"),
this.leaderboardButtons.css("display", e ? "none" : "block"),
e ? this.leaderboardPlayers.css("display", "none") : this.leaderboardPlayers.fadeIn(100)
},
getLeaderboardData: function(e) {
var t = this;
e && this.leaderboardLoading(!0);
var i = 0 == this.leaderboardActive ? this.leaderboardFront : this.leaderboardMain
, a = {
mode: i.find(".leaderboard-mode").val(),
stat: i.find(".leaderboard-stat").val(),
interval: i.find(".leaderboard-interval").val()
}
, r = this.populate.bind(this)
, o = {}
, s = a.mode;
o.mode = this.modeOptions[s];
var l = a.stat;
o.stat = this.statOptions[l];
var u = a.interval;
o.interval = this.intervalOptions[u];
var c = 0 == this.leaderboardActive ? 5 : 100
, d = "/leaderboard?type=" + l + "&mode=" + s + "&interval=" + u + "&maxCount=" + c;
n.ajax({
type: "GET",
url: d,
timeout: this.timeout
}).done(function(e) {
if (t.leaderboardLoading(!1),
e)
try {
var n = JSON.parse(e);
r(i, n, a)
} catch (e) {
t.leaderboardLoading(!1)
}
}).fail(function(e) {
t.leaderboardLoading(!1)
})
},
setLeaderboardMode: function(e, t) {
n("#leaderboard-front-select").find(".leaderboard-mode").val(e),
this.getLeaderboardData(t)
},
startLeaderboardRotation: function() {
var e = [1, 2, 4];
this.currentDisplayedModeIdx = r.randomInt(0, e.length - 1),
this.setLeaderboardMode(e[this.currentDisplayedModeIdx], !0)
},
populate: function(e, t, i) {
var a = {
stat: this.statOptions[i.stat],
interval: this.intervalOptions[i.interval]
}
, r = this.leaderboardActive;
1 == r && e.find(".leaderboard-header-two").html(a.stat ? a.stat.toUpperCase() : "");
var o = e.find(".leaderboard-players-values");
o.html("");
for (var s = 0; s < t.length; s++) {
var l = t[s]
, u = l.name
, c = l.val
, d = (l.games,
"");
if (1 == r) {
d = '<tr class="main"><td class="rank">#' + (s + 1) + "</td><td>";
for (var h = l.name.split(","), p = 0; p < h.length; p++) {
d += '<span class="player-name-main">' + h[p] + "</span>"
}
d += "</td><td>" + l.val + "</td>",
d += "most_kills" != i.stat ? "<td>" + l.games + "</td>" : "",
d += "</tr>"
} else
d = '<div><div class="front-name">' + u + '</div><div class="front-value">' + c + "</div></div>";
o.append(d)
}
var m = 1;
if ("top5_pct" == i.stat || "kdr" == i.stat)
switch (i.interval) {
case "daily":
m = 15;
break;
case "weekly":
m = 50;
break;
case "all":
m = 100
}
n(".leaderboard-header-three").css("display", "most_kills" != i.stat ? "block" : "none"),
n(".leaderboard-header-three").html(this.localization.translate("index-total-games").toUpperCase() + "(>" + m + ")")
}
},
e.exports = a
},
MWDq: function(e, t, i) {
"use strict";
function a(e, t, i) {
return t in e ? Object.defineProperty(e, t, {
value: i,
enumerable: !0,
configurable: !0,
writable: !0
}) : e[t] = i,
e
}
function n(e) {
var t = Math.floor(e / 3600)
, i = Math.floor(e / 60) % 60
, a = Math.floor(e) % 60
, n = "";
return t > 0 && (n += t + "h "),
(t > 0 || i > 0) && (n += i + "m "),
n += a + "s"
}
function r(e, t, i, n, r, o) {
var c = this;
this.game = e,
this.particleBarn = n,
this.localization = r,
this.gameElem = l("#ui-game"),
this.statsMain = l("#ui-stats"),
this.statsElem = l("#ui-stats-bg"),
this.statsContents = l("#ui-stats-contents-inner"),
this.statsHeader = l("#ui-stats-header"),
this.statsInfoBox = l("#ui-stats-info-box"),
this.statsOptions = l("#ui-stats-options"),
this.statsAd = l("#ui-stats-ad-container"),
this.mainMedRectAd = l("#ad-block-main-med-rect"),
this.mainLeaderBotAd = l("#ad-block-main-leader-bot"),
this.killElem = l("#ui-kills"),
this.killText = l("#ui-kill-text"),
this.killCount = l("#ui-kill-count"),
this.killTimeout = null,
this.escMenuElem = l("#ui-game-menu"),
this.escMenuDisplayed = !1,
this.topLeft = l("#ui-top-left"),
this.topCenter = l("#ui-top-center-scopes"),
this.waitingForPlayers = !0,
this.waitingText = l("#ui-waiting-text"),
this.spectating = !1,
this.prevSpectatorCount = 0,
this.spectatorCount = 0,
this.spectatorCounterDisplayed = !1,
this.spectatorCounterContainer = l("#ui-spec-counter"),
this.spectatorCounter = l("#ui-spec-counter-number"),
this.spectateMode = l(".ui-spectate-mode"),
this.spectatedPlayerText = l("#ui-spectate-text"),
this.spectatedPlayerName = "",
this.spectatedPlayerId = null,
this.spectateModeStats = l("#ui-spectate-stats"),
this.spectateModeStatsData = l("#ui-spectate-stats-data"),
this.settingsContainer = l("#ui-settings-container"),
this.equippedAmmo = l("#ui-equipped-ammo"),
this.prevEquippedAmmo = 0,
this.prevRemainingAmmo = 0,
this.prevEquippedWeapon = "",
this.currentClip = l("#ui-current-clip"),
this.ammoDivider = l("#ui-ammo-divider"),
this.remainingAmmo = l("#ui-remaining-ammo"),
this.rightCenter = l("#ui-right-center"),
this.playersAlive = l("#ui-players-alive"),
this.announcement = l("#ui-announcement"),
this.mapContainer = l("#ui-map-container"),
this.mapContainerBottom = 52,
this.mapInfo = l("#ui-map-info"),
this.mapInfoBottom = 218,
this.gasState = {},
this.gasIcon = l("#ui-gas-icon"),
this.gasTimer = l("#ui-gas-timer"),
this.mapMinimizeButton = l("#ui-map-minimize"),
this.bottomCenterRight = l("#ui-bottom-center-right"),
this.curAction = {
type: h.None
},
this.displayMapDirty = !1,
this.displayMapClear = !1,
l("#ui-map-expand").on("mousedown", function(e) {
e.stopPropagation()
}),
l("#ui-map-expand").on("click", function(e) {
c.displayMapLarge()
}),
l("#ui-map-minimize").on("mousedown", function(e) {
e.stopPropagation()
}),
l("#ui-map-minimize").on("click", function(e) {
e.stopPropagation(),
c.toggleMiniMap()
}),
l(document).on("keyup", function(e) {
76 != e.which || c.game.gameOver || x.toggleFullScreen()
}),
this.fullScreenButton = l("#btn-game-fullscreen"),
this.fullScreenButton.on("mousedown", function(e) {
e.stopPropagation()
}),
this.fullScreenButton.on("click", function() {
x.toggleFullScreen(),
c.toggleEscMenu()
}),
this.resumeButton = l("#btn-game-resume"),
this.resumeButton.on("mousedown", function(e) {
e.stopPropagation()
}),
this.resumeButton.on("click", function() {
c.toggleEscMenu()
}),
l("#btn-spectate-quit").on("click", function() {
c.doQuitGame()
}),
l("#btn-game-quit").on("mousedown", function(e) {
e.stopPropagation()
}),
l("#btn-game-quit").on("click", function() {
window.history && window.history.replaceState("", "", "/"),
c.doQuitGame()
}),
this.specStatsButton = l("#btn-spectate-view-stats"),
this.specStatsButton.on("click", function() {
c.toggleLocalStats()
}),
this.beginSpectating = !1,
this.specNext = !1,
this.specPrev = !1,
this.specNextButton = l("#btn-spectate-next-player"),
this.specNextButton.on("click", function() {
c.specNext = !0
}),
this.specPrevButton = l("#btn-spectate-prev-player"),
this.specPrevButton.on("click", function() {
c.specPrev = !0
}),
this.healthRed = new s(255,0,0),
this.healthDarkpink = new s(255,45,45),
this.healthLightpink = new s(255,112,112),
this.healthWhite = new s(255,255,255),
this.healthGrey = new s(179,179,179),
this.prevHealth = 0,
this.minimapDisplayed = !0,
this.visibilityMode = 0,
this.gasRenderer = new b(o,0),
this.container = new u.Container,
this.container.mask = new u.Graphics,
this.display = {
gas: this.gasRenderer.display,
teammates: new u.Container,
player: new u.Container,
lines: new u.Graphics,
border: new u.Graphics
},
this.mapSprite = new u.Sprite(u.Texture.EMPTY),
this.mapSprite.anchor = new u.Point(.5,.5),
this.container.addChild(this.mapSprite),
this.container.addChild(this.display.gas),
this.container.addChild(this.display.teammates),
this.container.addChild(this.display.player),
this.container.addChild(this.display.lines),
this.container.addChild(this.display.border),
this.mapHeight = 0,
this.mapWidth = 0,
this.bigmapDisplayed = !1,
this.minimapMargin = 16,
this.minimapSize = 256,
this.screenScaleFactor = 1,
this.minimapPos = m.create(16 + this.minimapSize / 2, window.innerHeight - this.minimapSize / 2 - 16),
this.playerOuter = u.Sprite.fromImage("img/gui/player-map-outer.svg"),
this.playerOuter.anchor = new u.Point(.5,.5),
this.playerOuterBaseScale = new u.Point(.3,.3),
this.playerOuter.scale = this.playerOuterBaseScale,
this.playerOuter.tint = 16777215,
this.player = u.Sprite.fromImage("img/gui/player-map-inner.svg"),
this.player.anchor = new u.Point(.5,.5),
this.playerBaseScale = new u.Point(.2,.2),
this.player.scale = this.playerBaseScale,
this.player.tint = 16777215,
this.dead = !1,
this.audioManager = t,
this.actionSoundInstance = !1,
this.muteButton = l("#ui-mute-ingame"),
this.muteButtonImage = this.muteButton.find("img"),
this.muteOffImg = "img/gui/audio-off.svg",
this.muteOnImg = "img/gui/audio-on.svg";
var p = this.audioManager.mute;
this.muteButtonImage.attr("src", p ? this.muteOffImg : this.muteOnImg),
this.muteButton.on("mousedown", function(e) {
e.stopPropagation()
}),
this.muteButton.on("click", function(e) {
var t = c.audioManager.muteToggle();
c.muteButtonImage.attr("src", t ? c.muteOffImg : c.muteOnImg),
t = null
}),
this.pieTimer = i,
this.displayingStats = !1,
this.teamSelectors = [];
for (var g = 0; g < 4; g++) {
var f, y = this.topLeft, v = g, w = u.Sprite.fromImage("img/gui/ping-map-pulse.svg");
w.anchor = this.playerOuter.anchor,
w.scale = new u.Point(0,0),
w.tint = d.teamColors[g],
w.visible = !1,
this.display.teammates.addChild(w);
var T = u.Sprite.fromImage("img/gui/ping-map-coming.svg");
T.anchor = this.player.anchor,
T.scale = this.playerBaseScale,
T.tint = d.teamColors[g],
T.visible = !1,
this.display.teammates.addChild(T);
var k = u.Sprite.fromImage("img/gui/ping-map-danger.svg");
k.anchor = this.player.anchor,
k.scale = this.playerBaseScale,
k.tint = d.teamColors[g],
k.visible = !1,
this.display.teammates.addChild(k);
var S = u.Sprite.fromImage("img/gui/ping-map-help.svg");
S.anchor = this.player.anchor,
S.scale = this.playerBaseScale,
S.tint = d.teamColors[g],
S.visible = !1,
this.display.teammates.addChild(S);
var M = u.Sprite.fromImage("img/gui/player-map-outer.svg");
M.anchor = this.playerOuter.anchor,
M.scale = this.playerOuterBaseScale,
M.tint = this.playerOuter.tint,
M.visible = !1,
this.display.teammates.addChild(M);
var P = u.Sprite.fromImage("img/gui/player-map-inner.svg");
P.anchor = this.player.anchor,
P.scale = this.playerBaseScale,
P.tint = d.teamColors[g],
P.visible = !1,
this.display.teammates.addChild(P),
this.teamSelectors.push({
teamNameHtml: "",
teamId: l(y).find("[data-id=" + v + "]"),
teamIdDisplayed: !1,
teamName: l(y).find("[data-id=" + v + "]").find(".ui-team-member-name"),
teamIcon: l(y).find("[data-id=" + v + "]").find(".ui-team-member-icon"),
teamStatus: l(y).find("[data-id=" + v + "]").find(".ui-team-member-status"),
teamHealthInner: l(y).find("[data-id=" + v + "]").find(".ui-health-actual"),
teamHealthDepleted: l(y).find("[data-id=" + v + "]").find(".ui-health-depleted"),
prevHealth: 0,
prevStatus: {
disconnected: !1,
dead: !1,
downed: !1
},
indicators: {
main: {
elem: l("#ui-team-indicators").find(".ui-indicator-main[data-id=" + v + "]"),
displayed: !1
}
},
mapSprites: (f = {
outer: {
sprite: M,
position: m.create(0, 0),
usePlayerPosition: !0,
showOnDeath: !1,
displayed: !0
},
inner: {
sprite: P,
position: m.create(0, 0),
usePlayerPosition: !0,
showOnDeath: !0,
displayed: !0
},
pingPulseWave: {
sprite: w,
position: m.create(0, 0),
usePlayerPosition: !1,
showOnDeath: !0,
displayed: !1,
pulse: !0,
scale: 0,
baseScale: 0,
life: 0,
maxLife: 0
}
},
a(f, _.Coming, {
sprite: T,
position: m.create(0, 0),
usePlayerPosition: !1,
showOnDeath: !0,
displayed: !1,
life: 0,
maxLife: 0
}),
a(f, _.Danger, {
sprite: k,
position: m.create(0, 0),
usePlayerPosition: !1,
showOnDeath: !0,
displayed: !1,
life: 0,
maxLife: 0
}),
a(f, _.Help, {
sprite: S,
position: m.create(0, 0),
usePlayerPosition: !1,
showOnDeath: !0,
displayed: !1,
life: 0,
maxLife: 0
}),
f),
mapSpritesLocal: !1
})
}
this.init()
}
function o(e, t, i, a) {
var n = e
, r = t
, o = n + (r - n) / i * a;
return Math.floor(o)
}
function s(e, t, i) {
var a, n, r;
!function(e, t, i) {
a = e,
n = t,
r = i
}(e, t, i),
this.getColors = function() {
return {
r: a,
g: n,
b: r
}
}
}
var l = i("juYr")
, u = i("gKxX")
, c = i("8iex")
, d = (i("9xSA"),
i("+0OL"))
, h = d.Action
, p = d.GasMode
, m = (i("yp2f"),
i("/2+T"))
, g = i("0od3")
, f = i("Tf6H")
, y = (i("K7EQ"),
i("85i3"))
, v = i("p/CU")
, b = v.GasRenderer
, x = i("Jr6A")
, _ = (i("EZ6M"),
i("moUH").Ping)
, w = i("bkPR");
r.prototype = {
free: function() {
this.clearUI(),
l(document).off("keyup"),
l("#ui-map-expand").off("mousedown"),
l("#ui-map-expand").off("click"),
l("#ui-map-minimize").off("mousedown"),
l("#ui-map-minimize").off("click"),
this.muteButton.off("mousedown"),
this.muteButton.off("click"),
this.fullScreenButton.off("mousedown"),
this.fullScreenButton.off("click"),
this.resumeButton.off("mousedown"),
this.resumeButton.off("click"),
l("#btn-spectate-quit").off("click"),
l("#btn-game-quit").off("mousedown"),
l("#btn-game-quit").off("click"),
this.specStatsButton.off("click"),
this.specPrevButton.off("click"),
this.specNextButton.off("click"),
this.init()
},
init: function() {
l(".ui-map-hidden").css("display", "block"),
this.clearStatsElems(),
this.setSpectating(!1),
this.updateSpectatorCountDisplay(!0),
this.dead = !1
},
doQuitGame: function() {
this.refreshMainPageAds(),
this.game.gameOver = !0,
this.game.onQuit()
},
update: function(e, t, i, a, n, r, o, s, l, v) {
var b = this
, x = t.netData
, _ = t.localData
, T = t;
this.mapWidth = a.width,
this.mapHeight = a.height,
this.mapSprite.texture == u.Texture.EMPTY && null != a.getMapTexture() && (this.mapSprite.texture = a.getMapTexture(),
this.redraw(s));
var k = Math.max(Math.floor(n.duration * (1 - n.circleT)), 0)
, S = {
mode: n.mode,
time: k
};
if (this.gasState.mode != S.mode || this.gasState.time != S.time) {
this.gasState = S;
var M = this.gasState.mode == p.Moving;
this.mapInfo.removeClass("icon-pulse"),
this.gasIcon.removeClass("gas-icon"),
this.gasIcon.removeClass("danger-icon"),
M && this.mapInfo.addClass("icon-pulse"),
this.gasIcon.addClass(M ? "danger-icon" : "gas-icon");
var P = Math.floor(this.gasState.time / 60)
, E = this.gasState.time % 60
, C = ("0" + E).slice(-2);
this.gasTimer.html(P + ":" + C)
}
this.spectatorCount = _.spectatorCount,
this.updateSpectatorCountDisplay(!1),
x.dead && !this.dead && (this.dead = !0,
this.pieTimer.free(!0));
var O = _.action
, I = g.eqAbs(g.clamp(O.time, 0, O.duration), O.duration, .2);
if (!(this.curAction.type == O.type && this.curAction.item == O.item && this.curAction.duration == O.duration || I || this.displayingStats)) {
this.curAction = {
type: O.type,
item: O.item,
time: O.time,
duration: O.duration
};
var A = O.type != h.Reload;
if (this.pieTimer.free(A),
this.actionSoundInstance && (this.audioManager.stopSound(this.actionSoundInstance),
this.actionSoundInstance = !1),
O.type != h.None) {
var D = ""
, R = ""
, L = ""
, j = null
, F = !1;
switch (O.type) {
case h.Reload:
if ("" != O.item) {
var B = d.items[O.item];
R = this.localization.translate("game-reloading"),
j = B.sound.reload,
F = "reload" == B.caseTiming
}
break;
case h.UseItem:
if ("" != O.item) {
var N = d.items[O.item];
R = this.localization.translate("game-using"),
L = this.localization.translate("game-" + O.item),
j = N.sound.use
}
break;
case h.Revive:
var z = f.unEntity(o.getPlayerInfo(O.targetId).name);
R = this.localization.translate("game-reviving"),
L = T.downed ? "" : z
}
if ("" == R && "" == L || ("svo" == this.localization.translate("word-order") ? (D += R || "",
D += L ? " " + L : "") : "sov" == this.localization.translate("word-order") && (D += L ? L + " " : "",
D += R ? " " + R : ""),
this.pieTimer.init(function() {
b.curAction.type = h.None
}, this.curAction.duration - this.curAction.time, D, !1)),
j && (this.actionSoundInstance = this.audioManager.playSound(j),
this.audioManager.stopLocalActionSound()),
F && "" != O.item)
for (var U = d.items[O.item], H = 0; H < U.maxClip; H++) {
var G = H % 2 == 0 ? -1 : 1
, V = Math.PI + Math.PI / 4 * G;
w.createCasingParticle(O.item, V, t.pos, t.dir, this.particleBarn)
}
}
}
this.bigmapDisplayed || (this.mapSprite.x = this.minimapPos.x + this.mapSprite.width / 2 - t.pos.x / a.width * this.mapSprite.width,
this.mapSprite.y = this.minimapPos.y - this.mapSprite.height / 2 + t.pos.y / a.height * this.mapSprite.height);
var W = m.create(.5 * s.screenWidth / s.z(), .5 * s.screenHeight / s.z())
, q = {
min: m.sub(s.pos, W),
max: m.add(s.pos, W)
}
, X = o.getPlayerInfo(t.__id).teamId
, K = o.getTeamInfo(X);
if (!K) {
var Y = {
playerId: t.__id,
teamId: X,
spectating: this.spectating,
playing: this.game.playingTicker,
teamInfo: o.teamInfo
};
y.logError("badTeamInfo_1: " + JSON.stringify(Y))
}
for (var Z = K.playerIds.length, J = 0; J < Z; J++) {
var Q = this.teamSelectors[J]
, $ = K.playerIds[J]
, ee = o.getPlayerInfo($)
, te = $ == T.__id
, ie = o.getTeammateData($);
for (var ae in Q.mapSprites)
if (Q.mapSprites.hasOwnProperty(ae)) {
var ne = Q.mapSprites[ae]
, re = ne.sprite
, oe = ne.usePlayerPosition ? ie.pos : ne.position
, se = ne.displayed && (!ie.dead || ne.showOnDeath);
"outer" != ae || te || (se = !1),
this.updateMapPosition(re, oe, se, a),
ne.displayed && (void 0 != ne.life && (ne.life -= e,
ne.displayed = ne.life > 0,
ne.maxLife - ne.life < .1 ? re.alpha = (ne.maxLife - ne.life) / .1 : ne.life < .5 ? re.alpha = ne.life / .5 : re.alpha = 1),
ne.pulse && ne.displayed && (ne.scale = ne.scale + e / 2.5,
re.scale = new u.Point(ne.scale,ne.scale)))
}
if (te && !Q.mapSpritesLocal ? (this.display.player.addChild(Q.mapSprites.outer.sprite, Q.mapSprites.inner.sprite),
Q.mapSpritesLocal = !0) : !te && Q.mapSpritesLocal && (this.display.teammates.addChild(Q.mapSprites.outer.sprite, Q.mapSprites.inner.sprite),
Q.mapSpritesLocal = !1),
l > 1) {
Q.teamIdDisplayed || (Q.teamId.css("display", "block"),
Q.teamIdDisplayed = !0),
this.updateTeam(J, ee.name, ie.health, {
disconnected: ie.disconnected,
dead: ie.dead,
downed: ie.downed
}, !1);
for (var le in Q.indicators)
if (Q.indicators.hasOwnProperty(le)) {
var ue = Q.indicators[le]
, ce = ue.elem
, de = !0;
if (!te || ue.displayAll) {
var he = ie.pos
, pe = m.normalizeSafe(m.sub(he, s.pos), m.create(1, 0))
, me = c.intersectRayAabb(s.pos, pe, q.min, q.max)
, ge = Math.atan2(pe.y, -pe.x) + .5 * Math.PI
, fe = s.pointToScreen(me)
, ye = c.testCircleAabb(he, d.player.radius, q.min, q.max);
if (!ie.dead && !ye) {
de = !1,
ce.css({
left: g.clamp(fe.x, 32, s.screenWidth - 32),
top: g.clamp(fe.y, 32, s.screenHeight - 32),
transform: "translate(-50%, -50%) rotate(" + ge + "rad)"
}),
ue.displayed || (ce.css("display", "block"),
ue.displayed = !0)
}
}
de && ue.displayed && (ce.css("display", "none"),
ue.displayed = !1)
}
}
}
for (var ve = Z; ve < this.teamSelectors.length; ve++) {
var be = this.teamSelectors[ve];
for (var xe in be.mapSprites)
if (be.mapSprites.hasOwnProperty(xe)) {
var _e = be.mapSprites[xe];
_e.visible = !1
}
for (var we in be.indicators)
if (be.indicators.hasOwnProperty(we)) {
var Te = be.indicators[we];
Te.displayed && (Te.elem.css("display", "none"),
Te.displayed = !1)
}
if (be.teamIdDisplayed) {
for (var ke in be.mapSprites)
if (be.mapSprites.hasOwnProperty(ke)) {
var Se = be.mapSprites[ke]
, Me = Se.sprite;
Me.visible = !1
}
be.teamId.css("display", "none"),
be.teamIdDisplayed = !1
}
}
},
setPlayerPing: function(e, t, i, a) {
var n = this.teamSelectors[t];
if (n) {
var r = n.mapSprites[e];
if (r) {
r.position = i,
r.displayed = !0,
r.life = a,
r.maxLife = a;
var o = n.mapSprites.pingPulseWave;
o.position = i,
o.displayed = !0,
o.life = 4,
o.maxLife = 4,
o.scale = o.baseScale
}
}
},
updateMapPosition: function(e, t, i, a) {
var n = this.getMapPosFromWorldPos(t, a);
e.position = n,
e.visible = i
},
getMapPosFromWorldPos: function(e, t) {
var i = this.mapSprite.x - this.mapSprite.width / 2 + e.x / t.width * this.mapSprite.width
, a = this.mapSprite.y + this.mapSprite.height / 2 - e.y / t.height * this.mapSprite.height;
return m.create(i, a)
},
getWorldPosFromMapPos: function(e, t, i) {
var a = !1;
if (this.bigmapDisplayed) {
var n = (i.screenWidth - this.mapSprite.width) / 2
, r = (i.screenHeight - this.mapSprite.height) / 2;
a = e.x > n && e.x < i.screenWidth - n && e.y > r && e.y < i.screenHeight - r
} else if (this.minimapDisplayed) {
var o = this.minimapSize * this.screenScaleFactor;
a = e.x > this.minimapMargin && e.x < this.minimapMargin + o && e.y > i.screenHeight - this.minimapMargin - o && e.y < i.screenHeight - this.minimapMargin
}
if (a) {
var s = m.create(this.mapSprite.x - this.mapSprite.width / 2, this.mapSprite.y + this.mapSprite.height / 2)
, l = (e.x - s.x) / this.mapSprite.width * this.mapWidth
, u = (s.y - e.y) / this.mapSprite.height * this.mapHeight;
return m.create(l, u)
}
return !1
},
tryPlayDropSound: function(e, t, i) {
var a = e.netData
, n = e.localData
, r = n.inventory[t] > 0 || t == a.helmet || t == a.chest;
void 0 != n.weapons[i] && (r = r || "" != n.weapons[i].name),
r && this.audioManager.playSound("loot_drop_01", {
channel: "ui"
})
},
hideAll: function() {
this.gameElem.css("display", "none")
},
showAll: function() {
this.gameElem.css("display", "block")
},
removeAds: function() {
window.aiptag.cmd.display.push(function() {
aipDisplayTag.destroy("surviv-io_300x250")
}),
window.aiptag.cmd.display.push(function() {
aipDisplayTag.destroy("surviv-io_300x250_2")
}),
window.aiptag.cmd.display.push(function() {
aipDisplayTag.destroy("surviv-io_728x90")
})
},
refreshMainPageAds: function() {
window.adsEnabled && !window.adsense && (window.aiptag.cmd.display.push(function() {
aipDisplayTag.display("surviv-io_300x250")
}),
window.aiptag.cmd.display.push(function() {
aipDisplayTag.display("surviv-io_728x90")
}))
},
showKill: function(e, t, i, a) {
var n = this
, r = a ? f.unEntity(e.name) : this.localization.translate("game-you").toUpperCase()
, o = e.completeKill ? this.localization.translate("game-killed") : this.localization.translate("game-finally-killed")
, s = t.downed && !t.killed;
s && (o = this.localization.translate("game-knocked-out"));
var l = t.suicide ? a ? this.localization.translate("game-themselves") : this.localization.translate("game-yourself").toUpperCase() : f.unEntity(t.name);
this.killText.text(r + " " + o + " " + l),
(e.completeKill || s) && i && this.killText.append(" " + this.localization.translate("game-with") + " " + i),
s || t.suicide || t.teamKill ? this.killCount.text("") : this.killCount.text(e.kills + (1 != e.kills ? " " + this.localization.translate("game-kills") : " " + this.localization.translate("game-kill"))),
this.killTimeout && clearTimeout(this.killTimeout),
this.killElem.stop(!0),
this.killElem.fadeIn(0),
this.killTimeout = setTimeout(function() {
n.killElem.fadeOut(1e3)
}, 6e3)
},
showDowned: function(e, t, i, a) {
var n = this
, r = a ? f.unEntity(t.name) : this.localization.translate("game-you").toUpperCase()
, o = f.unEntity(e.name);
e.damageType == d.DamageType.Gas && (o = this.localization.translate("game-the-red-zone")),
this.killText.text(o + " knocked " + r + " out"),
i && e.damageType == d.DamageType.Player && this.killText.append(" " + this.localization.translate("game-with") + " " + i),
this.killCount.text(""),
this.killTimeout && clearTimeout(this.killTimeout),
this.killElem.stop(!0),
this.killElem.fadeIn(0),
this.killTimeout = setTimeout(function() {
n.killElem.fadeOut(1e3)
}, 6e3)
},
clearUI: function() {
this.pieTimer.free(!0),
this.curAction = {
type: h.None
},
this.displayMapLarge(!0),
this.displayMiniMap(),
this.clearStatsElems(),
this.killElem.hide(),
this.clearTeamUI(),
this.toggleEscMenu(!0),
this.toggleLocalStats(!0),
this.visibilityMode = 0,
this.interactionDesc = "",
this.spectatorCount = 0
},
hideStats: function() {
this.displayingStats = !1,
this.statsMain.css("display", "none"),
this.statsElem.stop().css({
display: "none",
opacity: 0
}),
this.statsContents.stop().hide()
},
showStats: function(e, t) {
var i = this;
if (e.teamMode = e.teamMode || 1,
e.spectating = e.spectating || !1,
e.gameOver = e.gameOver || !1,
e.stats = e.stats || {
timeAlive: 0,
kills: 0,
rank: 0
},
1 != e.teamMode || !e.spectating || e.gameOver) {
this.toggleEscMenu(!0),
this.clearStatsElems(),
this.statsMain.css("display", "block");
var a = 2500
, r = "";
switch (e.teamMode) {
case 1:
r = this.localization.translate("game-solo-rank");
break;
case 2:
r = this.localization.translate("game-duo-rank");
break;
case 4:
r = this.localization.translate("game-squad-rank");
break;
default:
r = this.localization.translate("game-rank")
}
var o = null;
e.victory && (o = e.spectating && 1 == e.teamMode ? this.spectatedPlayerName + " " + this.localization.translate("game-won-the-game") : this.localization.translate("game-chicken"),
a = 1750),
1 != e.teamMode ? this.statsHeader.html(function() {
var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : null
, a = t || i.localization.translate("game-team-eliminated")
, n = '<div><span class="ui-stats-header-stat">' + r + " </span>";
n += '<span class="ui-stats-header-value">#' + e.teamRank + "</span></div>";
for (var o = 0, s = 0; s < e.stats.length; s++)
o += e.stats[s].kills;
return n += '<div><span class="ui-stats-header-stat">' + i.localization.translate("game-team-kills") + " </span>",
n += '<span class="ui-stats-header-value">' + o + "</span></div>",
l("<div/>", {
class: ""
}).append(l("<div/>", {
class: "ui-stats-header-title",
html: t || a
})).append(l("<div/>", {
class: "ui-stats-header-overview",
html: n
}))
}(o)) : this.statsHeader.html(function() {
var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : null
, a = (e.stats[0],
e.spectating && 1 == e.teamMode ? i.spectatedPlayerName : i.localization.translate("game-You"));
a += " ",
a += e.spectating && 1 == e.teamMode ? i.localization.translate("game-player-died") : i.localization.translate("game-you-died"),
a += ".";
var n = '<div><span class="ui-stats-header-stat">' + r + " </span>";
return n += '<span class="ui-stats-header-value">#' + e.teamRank + "</span></div>",
l("<div/>", {
class: ""
}).append(l("<div/>", {
class: "ui-stats-header-title",
html: t || a
})).append(l("<div/>", {
class: "ui-stats-header-overview",
html: n
}))
}(o)),
this.pieTimer.free(!0),
this.displayingStats = !0;
var s = function(e, t) {
return l("<div/>", {
class: "ui-stats-info"
}).append(l("<div/>", {
html: e
})).append(l("<div/>", {
html: t
}))
}
, u = 0;
u -= 250 * (e.stats.length - 1) / 2,
u -= 10 * (e.stats.length - 1);
for (var c = 0; c < e.stats.length; c++) {
var d = e.stats[c]
, h = t.getPlayerInfo(d.playerId)
, p = n(d.timeAlive)
, m = "ui-stats-info-player";
m += d.dead ? " ui-stats-info-status" : "";
var g = function(e) {
return l("<div/>", {
class: e
})
}(m);
g.css("left", u),
g.append(l("<div/>", {
class: "ui-stats-info-player-name",
html: h.name
})),
g.append(s(this.localization.translate("game-kills"), "" + d.kills)).append(s(this.localization.translate("game-damage-dealt"), d.damageGiven)).append(s(this.localization.translate("game-damage-taken"), d.damageTaken)).append(s(this.localization.translate("game-survived"), p)),
this.statsInfoBox.append(g),
u += 10
}
var f = l("<a/>", {
class: "btn-green btn-darken menu-option",
id: "ui-stats-restart",
html: this.localization.translate("game-play-new-game")
});
if (f.on("click", function() {
i.doQuitGame()
}),
this.statsOptions.append(f),
e.gameOver || this.waitingForPlayers)
f.css({
width: 225
});
else {
f.css({
left: -72
});
var y = l("<a/>", {
class: "btn-green btn-darken menu-option",
id: "ui-stats-spectate",
html: this.localization.translate("game-spectate")
});
y.on("click", function() {
i.beginSpectating = !0,
i.hideStats()
}),
this.statsOptions.append(y)
}
if (!e.victory && window.adsEnabled && !window.adsense) {
var v = a - 150;
setTimeout(function() {
i.statsAd.show(),
i.killElem.stop(),
i.killElem.hide(),
window.aiptag.cmd.display.push(function() {
aipDisplayTag.display("surviv-io_300x250_2")
})
}, v)
}
var b = 0
, x = 250 / Math.max(1, e.stats.length)
, _ = 750 / Math.max(1, e.stats.length);
this.statsInfoBox.children().each(function(e, t) {
var i = l(t);
i.css("opacity", 0),
i.delay(a + _ + (b + e) * x).animate({
opacity: 1
}, 500, function() {
i.children().each(function(e, t) {
l(t).delay(e * x).animate({
opacity: 1
}, 500)
})
}),
i.children().each(function(e, t) {
l(t).css("opacity", 0),
b++
}),
b++
}),
this.statsOptions.children().each(function(e, t) {
var i = l(t);
i.hide(),
i.delay(a + _ + (b + e) * x).fadeIn(500),
b++
}),
this.statsElem.stop(),
this.statsElem.css("display", "block"),
this.statsElem.delay(a).animate({
opacity: 1
}, 1e3),
this.statsContents.stop(),
this.statsContents.css("display", "block"),
this.statsContents.delay(a).animate({
opacity: 1
}, 1e3)
}
},
clearStatsElems: function() {
this.statsHeader.empty(),
this.statsInfoBox.empty(),
this.statsOptions.empty(),
this.statsAd.css("display", "none"),
this.statsContents.stop(),
this.statsContents.css({
display: "none",
opacity: 0
}),
this.statsElem.stop(),
this.statsElem.css({
display: "none",
opacity: 0
}),
this.statsMain.css("display", "none")
},
setSpectating: function(e) {
if (this.spectating != e)
if (this.spectating = e,
this.spectatedPlayerName = "",
e) {
this.spectateMode.css("display", "block");
var t = this.game.teamMode <= 2;
this.specPrevButton.css("display", t ? "none" : "block"),
this.specNextButton.css("display", t ? "none" : "block"),
l(".ui-zoom").removeClass("ui-zoom-hover")
} else
this.spectateMode.css("display", "none")
},
setSpectatedPlayer: function(e, t) {
this.spectatedPlayerId != e && (this.spectatedPlayerText.find("#spectate-player").html(t),
this.spectatedPlayerName = t,
this.spectatedPlayerId = e,
this.curAction = {
type: h.None
})
},
setLocalStats: function(e) {
var t = {
kills: this.localization.translate("game-kills"),
damageGiven: this.localization.translate("game-damage-dealt"),
damageTaken: this.localization.translate("game-damage-taken"),
timeAlive: this.localization.translate("game-survived")
};
this.spectateModeStatsData.empty();
for (var i in t)
if (t.hasOwnProperty(i)) {
var a = t[i]
, r = "timeAlive" == i ? n(e[i]) : e[i]
, o = '<tr><td class="ui-spectate-stats-category">' + a + '</td><td class="ui-spectate-stats-value">' + r + "</td></tr>";
this.spectateModeStatsData.append(o)
}
},
toggleLocalStats: function() {
var e = arguments.length > 0 && void 0 !== arguments[0] && arguments[0]
, t = "none" == this.spectateModeStats.css("display") && !e;
this.spectateModeStats.css("display", t ? "inline-block" : "none"),
this.specStatsButton.html(t ? this.localization.translate("game-hide-match-stats") : this.localization.translate("game-view-match-stats"))
},
updatePlayersAlive: function(e) {
this.playersAlive.html(e)
},
displayMapLarge: function(e) {
this.bigmapDisplayed = !e && !this.bigmapDisplayed,
this.bigmapDisplayed ? this.container.alpha = 1 : this.container.alpha = this.minimapDisplayed ? 1 : 0,
l(2 == this.visibilityMode ? ".ui-hud-show" : ".ui-map-hidden").css("display", this.bigmapDisplayed ? "none" : "block"),
this.updateSpectatorCountDisplay(!0),
this.redraw(this.game.camera)
},
updateSpectatorCountDisplay: function(e) {
var t = !this.bigmapDisplayed && this.spectatorCount > 0;
e = e || this.spectatorCount > 0 && !this.spectatorCounterDisplayed || 0 == this.spectatorCount && this.spectatorCounterDisplayed,
this.spectatorCount != this.prevSpectatorCount && (this.spectatorCounter.html(this.spectatorCount),
this.prevSpectatorCount = this.spectatorCount),
e && (this.spectatorCounterContainer.css("display", t ? "block" : "none"),
this.spectatorCounterDisplayed = t)
},
toggleMiniMap: function() {
this.minimapDisplayed ? this.hideMiniMap() : this.displayMiniMap()
},
cycleVisibilityMode: function() {
if (!this.bigmapDisplayed)
switch (this.visibilityMode) {
case 0:
this.hideMiniMap(),
this.visibilityMode = 1;
break;
case 1:
this.displayMiniMap(),
this.visibilityMode = 0
}
},
cycleHud: function() {
"none" == this.gameElem.css("display") ? (this.gameElem.css("display", "block"),
this.displayMiniMap()) : (this.gameElem.css("display", "none"),
this.hideMiniMap())
},
showHUD: function(e, t) {
var i = e ? "block" : "none";
this.rightCenter.css("display", i),
this.bottomCenterRight.css("display", i),
this.settingsContainer.css("display", i),
this.topCenter.css("display", i)
},
hideMiniMap: function() {
this.bigmapDisplayed || (this.minimapDisplayed = !1,
this.container.alpha = 0,
this.mapInfo.css("bottom", "auto"),
this.spectatorCounterContainer.css({
bottom: 6,
left: 98
}))
},
displayMiniMap: function() {
this.bigmapDisplayed || (this.minimapDisplayed = !0,
this.container.alpha = 1,
this.mapInfo.css("bottom", this.mapInfoBottom),
this.spectatorCounterContainer.css({
bottom: 218,
left: 6
}))
},
displayAnnouncement: function(e, t) {
var i = "";
switch (e) {
case p.Waiting:
i = this.localization.translate("game-red-zone-advances");
var a = Math.floor(t / 60)
, n = t - 60 * a;
i += a > 1 ? " " + a + " " + this.localization.translate("game-minutes") : "",
i += 1 == a ? " " + a + " " + this.localization.translate("game-minute") : "",
i += n > 0 ? " " + Math.floor(n) + " " + this.localization.translate("game-seconds") : "";
break;
case p.Moving:
i = this.localization.translate("game-red-zone-advancing")
}
i.length > 0 && (this.announcement.html(i),
this.announcement.fadeIn(400, function() {
setTimeout(function() {
l("#ui-announcement").fadeOut(800)
}, 3e3)
}))
},
setWaitingForPlayers: function(e) {
this.waitingForPlayers = e,
this.waitingText.css("display", e ? "block" : "none")
},
render: function(e, t, i, a) {
var n = t.getCircle()
, r = this.getMapPosFromWorldPos(n.pos, a)
, o = this.getMapPosFromWorldPos(m.add(n.pos, m.create(n.rad, 0)), a)
, s = m.length(m.sub(o, r));
this.gasRenderer.render(r, s, t.isActive());
var l = this.display.lines;
if (l.clear(),
t.isActive()) {
var u = t.circleNew
, c = this.getMapPosFromWorldPos(e, a)
, d = this.getMapPosFromWorldPos(u.pos, a)
, h = this.getMapPosFromWorldPos(m.add(u.pos, m.create(u.rad, 0)), a)
, p = m.length(m.sub(h, d));
l.lineStyle(1.5, 16777215),
l.drawCircle(d.x, d.y, p);
var g = m.length(m.sub(e, t.circleNew.pos)) < t.circleNew.rad
, f = this.bigmapDisplayed ? 0 : g ? .5 : 1;
l.lineStyle(2, 65280, f),
l.moveTo(c.x, c.y),
l.lineTo(d.x, d.y)
}
},
updateHealthBar: function(e, t, i, a) {
var n = e
, r = .01 * a.health * n;
r = a.dead ? 0 : Math.max(r, 1),
t.css("width", r),
r > 0 ? i.css("width", r) : i.css("display", "none");
var s = a.health
, l = this.healthRed
, u = this.healthDarkpink;
if (s > 25) {
if (a.downed)
t.css({
backgroundColor: "red"
});
else {
g.eqAbs(s, 100, .2) ? (l = this.healthGrey,
u = this.healthGrey) : g.eqAbs(s, 75, .2) || s >= 75 ? (l = this.healthWhite,
u = this.healthWhite) : (l = this.healthDarkpink,
u = this.healthLightpink);
var c = l.getColors()
, d = u.getColors()
, h = o(c.r, d.r, 45, s)
, p = o(c.g, d.g, 45, s)
, m = o(c.b, d.b, 45, s);
t.css({
backgroundColor: "rgba(" + h + "," + p + "," + m + ",1)"
})
}
t.removeClass("ui-bar-danger")
} else
t.addClass("ui-bar-danger")
},
updateTeam: function(e, t, i, a) {
var n = this.teamSelectors[e].teamId
, r = this.teamSelectors[e].teamName
, o = this.teamSelectors[e].prevHealth
, s = this.teamSelectors[e].prevStatus
, l = a.dead != s.dead || a.disconnected != s.disconnected || a.downed != s.downed;
if (this.teamSelectors[e].teamNameHtml != t || i != o || l) {
var c = (this.teamSelectors[e].teamIcon,
this.teamSelectors[e].teamStatus)
, d = this.teamSelectors[e].teamHealthInner
, h = this.teamSelectors[e].teamHealthDepleted;
this.teamSelectors[e].teamNameHtml = t,
r.html(t),
this.updateHealthBar(200, d, h, {
health: i,
dead: a.dead,
downed: a.downed
}),
l && (c.attr("class", "ui-team-member-status"),
a.disconnected ? c.addClass("ui-team-member-status-disconnected") : a.dead ? c.addClass("ui-team-member-status-dead") : a.downed && c.addClass("ui-team-member-status-downed").addClass("icon-pulse"),
a.dead && (this.teamSelectors[e].mapSprites.inner.sprite.texture = u.Texture.fromImage("img/gui/skull-team-outlined.svg"),
this.teamSelectors[e].mapSprites.inner.sprite.scale = m.mul(this.playerBaseScale, 1.5)),
(a.disconnected || a.dead) && r.css("opacity", .3)),
n.css("display", "block"),
this.teamSelectors[e].prevStatus = a,
this.teamSelectors[e].prevHealth = i
}
},
clearTeamUI: function() {
l(".ui-team-member").css("display", "none"),
l(".ui-team-indicator").css("display", "none"),
l(".ui-team-member-name").removeAttr("style"),
l(".ui-team-member-status").removeAttr("style"),
l(".ui-team-member-status").removeClass("ui-team-member-status-downed ui-team-member-status-dead ui-team-member-status-disconnected icon-pulse"),
this.teamSelectors = []
},
resize: function(e) {
this.screenScaleFactor = Math.min(1, g.clamp(e.screenWidth / 1280, .75, 1) * g.clamp(e.screenHeight / 1024, .75, 1)),
this.pieTimer.resize(this.screenScaleFactor),
this.gasRenderer.resize(),
this.redraw(e)
},
redraw: function(e) {
var t = e.screenWidth
, i = e.screenHeight;
if (this.display.border.clear(),
this.container.mask.clear(),
this.bigmapDisplayed)
this.mapSprite.width = i,
this.mapSprite.height = i,
this.mapSprite.x = t / 2,
this.mapSprite.y = i / 2,
this.mapSprite.alpha = 1,
this.container.mask.beginFill(16777215, 1),
this.container.mask.drawRect(this.mapSprite.x - this.mapSprite.width / 2, this.mapSprite.y - this.mapSprite.height / 2, this.mapSprite.width, this.mapSprite.height),
this.container.mask.endFill();
else {
var a = 1600 * this.screenScaleFactor / 1.2
, n = this.minimapSize * this.screenScaleFactor;
this.mapSprite.width = a,
this.mapSprite.height = a,
this.mapSprite.alpha = .8;
var r = {
zoom: this.screenScaleFactor
};
"WebkitTransform"in document.body.style ? r = {
"-webkit-transform": "scale(" + this.screenScaleFactor + ")"
} : "transform"in document.body.style && (r = {
transform: "scale(" + this.screenScaleFactor + ")"
}),
this.mapContainer.css(r),
this.mapContainer.css("bottom", this.mapContainerBottom * this.screenScaleFactor),
this.minimapPos.x = 16 + n / 2,
this.minimapPos.y = i - n / 2 - 16,
this.player.scale = m.mul(this.playerBaseScale, this.screenScaleFactor),
this.player.position = new u.Point(this.minimapPos.x,this.minimapPos.y);
this.display.border.lineStyle(4, 0),
this.display.border.beginFill(0, 0),
this.display.border.drawRect(this.minimapMargin + 2, i - n - this.minimapMargin + 2, n - 4, n - 4),
this.display.border.endFill(),
this.container.mask.beginFill(16777215, 1),
this.container.mask.drawRect(this.minimapMargin, i - n - this.minimapMargin, n, n),
this.container.mask.endFill()
}
},
toggleEscMenu: function() {
var e = arguments.length > 0 && void 0 !== arguments[0] && arguments[0];
if (!this.displayingStats) {
if (this.escMenuDisplayed || e)
return this.escMenuDisplayed = !1,
void this.escMenuElem.css("display", "none");
if (this.bigmapDisplayed)
return void this.displayMapLarge(!0);
2 == this.visibilityMode && this.cycleVisibilityMode(),
this.escMenuDisplayed = !0,
this.escMenuElem.css("display", "block")
}
}
},
e.exports = {
UiManager: r
}
},
MeqN: function(e, t, i) {
"use strict";
(function(t) {
!function(i) {
function a(e, t) {
return r(e, t, !1)
}
function n(e, t) {
return r(e, t, !0)
}
function r(e, t, i) {
if (0 === t)
return "";
var a = 0
, n = []
, r = !0
, o = !!t;
for (t || (t = Math.floor((e._length - e._index) / 8)); a < t; ) {
var s = e.readUint8();
if (0 === s && (r = !1,
!o))
break;
r && n.push(s),
a++
}
var l = String.fromCharCode.apply(null, n);
if (!i)
return l;
try {
return decodeURIComponent(escape(l))
} catch (e) {
return l
}
}
function o(e, t, i) {
for (var a = i || t.length + 1, n = 0; n < a; n++)
e.writeUint8(n < t.length ? t.charCodeAt(n) : 0)
}
function s(e, t, i) {
for (var a = l(t), n = i || a.length + 1, r = 0; r < n; r++)
e.writeUint8(r < a.length ? a[r] : 0)
}
function l(e) {
var t, i, a = [];
for (t = 0; t < e.length; t++)
i = e.charCodeAt(t),
i <= 127 ? a.push(i) : i <= 2047 ? (a.push(i >> 6 | 192),
a.push(63 & i | 128)) : i <= 65535 ? (a.push(i >> 12 | 224),
a.push(i >> 6 & 63 | 128),
a.push(63 & i | 128)) : (a.push(i >> 18 | 240),
a.push(i >> 12 & 63 | 128),
a.push(i >> 6 & 63 | 128),
a.push(63 & i | 128));
return a
}
var u = function(e, i, a) {
if (!(e instanceof ArrayBuffer || void 0 !== t && e instanceof t))
throw new Error("Must specify a valid ArrayBuffer or Buffer.");
i = i || 0,
a = a || e.byteLength || e.length,
this._view = new Uint8Array(e,i,a)
};
u._scratch = new DataView(new ArrayBuffer(8)),
Object.defineProperty(u.prototype, "buffer", {
get: function() {
return t.from(this._view.buffer)
},
enumerable: !0,
configurable: !1
}),
Object.defineProperty(u.prototype, "byteLength", {
get: function() {
return this._view.length
},
enumerable: !0,
configurable: !1
}),
u.prototype._setBit = function(e, t) {
t ? this._view[e >> 3] |= 1 << (7 & e) : this._view[e >> 3] &= ~(1 << (7 & e))
}
,
u.prototype.getBits = function(e, t, i) {
var a = 8 * this._view.length - e;
if (t > a)
throw new Error("Cannot get " + t + " bit(s) from offset " + e + ", " + a + " available");
for (var n = 0, r = 0; r < t; ) {
var o = t - r
, s = 7 & e
, l = this._view[e >> 3]
, u = Math.min(o, 8 - s);
n |= (l >> s & (1 << u) - 1) << r,
e += u,
r += u
}
return i ? (32 !== t && n & 1 << t - 1 && (n |= -1 ^ (1 << t) - 1),
n) : n >>> 0
}
,
u.prototype.setBits = function(e, t, i) {
var a = 8 * this._view.length - e;
if (i > a)
throw new Error("Cannot set " + i + " bit(s) from offset " + e + ", " + a + " available");
for (var n = 0; n < i; ) {
var r;
i - n >= 8 && 0 == (7 & e) ? (this._view[e >> 3] = 255 & t,
r = 8) : (this._setBit(e, 1 & t),
r = 1),
t >>= r,
e += r,
n += r
}
}
,
u.prototype.getBoolean = function(e) {
return 0 !== this.getBits(e, 1, !1)
}
,
u.prototype.getInt8 = function(e) {
return this.getBits(e, 8, !0)
}
,
u.prototype.getUint8 = function(e) {
return this.getBits(e, 8, !1)
}
,
u.prototype.getInt16 = function(e) {
return this.getBits(e, 16, !0)
}
,
u.prototype.getUint16 = function(e) {
return this.getBits(e, 16, !1)
}
,
u.prototype.getInt32 = function(e) {
return this.getBits(e, 32, !0)
}
,
u.prototype.getUint32 = function(e) {
return this.getBits(e, 32, !1)
}
,
u.prototype.getFloat32 = function(e) {
return u._scratch.setUint32(0, this.getUint32(e)),
u._scratch.getFloat32(0)
}
,
u.prototype.getFloat64 = function(e) {
return u._scratch.setUint32(0, this.getUint32(e)),
u._scratch.setUint32(4, this.getUint32(e + 32)),
u._scratch.getFloat64(0)
}
,
u.prototype.setBoolean = function(e, t) {
this.setBits(e, t ? 1 : 0, 1)
}
,
u.prototype.setInt8 = u.prototype.setUint8 = function(e, t) {
this.setBits(e, t, 8)
}
,
u.prototype.setInt16 = u.prototype.setUint16 = function(e, t) {
this.setBits(e, t, 16)
}
,
u.prototype.setInt32 = u.prototype.setUint32 = function(e, t) {
this.setBits(e, t, 32)
}
,
u.prototype.setFloat32 = function(e, t) {
u._scratch.setFloat32(0, t),
this.setBits(e, u._scratch.getUint32(0), 32)
}
,
u.prototype.setFloat64 = function(e, t) {
u._scratch.setFloat64(0, t),
this.setBits(e, u._scratch.getUint32(0), 32),
this.setBits(e + 32, u._scratch.getUint32(4), 32)
}
,
u.prototype.getArrayBuffer = function(e, t) {
for (var i = new Uint8Array(t), a = 0; a < t; a++)
i[a] = this.getUint8(e + 8 * a);
return i
}
;
var c = function(e, t) {
return function() {
if (this._index + t > this._length)
throw new Error("Trying to read past the end of the stream");
var i = this._view[e](this._index);
return this._index += t,
i
}
}
, d = function(e, t) {
return function(i) {
this._view[e](this._index, i),
this._index += t
}
}
, h = function(e, i, a) {
var n = e instanceof ArrayBuffer || void 0 !== t && e instanceof t;
if (!(e instanceof u || n))
throw new Error("Must specify a valid BitView, ArrayBuffer or Buffer");
this._view = n ? new u(e,i,a) : e,
this._index = 0,
this._startIndex = 0,
this._length = 8 * this._view.byteLength
};
Object.defineProperty(h.prototype, "index", {
get: function() {
return this._index - this._startIndex
},
set: function(e) {
this._index = e + this._startIndex
},
enumerable: !0,
configurable: !0
}),
Object.defineProperty(h.prototype, "length", {
get: function() {
return this._length - this._startIndex
},
set: function(e) {
this._length = e + this._startIndex
},
enumerable: !0,
configurable: !0
}),
Object.defineProperty(h.prototype, "bitsLeft", {
get: function() {
return this._length - this._index
},
enumerable: !0,
configurable: !0
}),
Object.defineProperty(h.prototype, "byteIndex", {
get: function() {
return Math.ceil(this._index / 8)
},
set: function(e) {
this._index = 8 * e
},
enumerable: !0,
configurable: !0
}),
Object.defineProperty(h.prototype, "buffer", {
get: function() {
return this._view.buffer
},
enumerable: !0,
configurable: !1
}),
Object.defineProperty(h.prototype, "view", {
get: function() {
return this._view
},
enumerable: !0,
configurable: !1
}),
h.prototype.readBits = function(e, t) {
var i = this._view.getBits(this._index, e, t);
return this._index += e,
i
}
,
h.prototype.writeBits = function(e, t) {
this._view.setBits(this._index, e, t),
this._index += t
}
,
h.prototype.readBoolean = c("getBoolean", 1),
h.prototype.readInt8 = c("getInt8", 8),
h.prototype.readUint8 = c("getUint8", 8),
h.prototype.readInt16 = c("getInt16", 16),
h.prototype.readUint16 = c("getUint16", 16),
h.prototype.readInt32 = c("getInt32", 32),
h.prototype.readUint32 = c("getUint32", 32),
h.prototype.readFloat32 = c("getFloat32", 32),
h.prototype.readFloat64 = c("getFloat64", 64),
h.prototype.writeBoolean = d("setBoolean", 1),
h.prototype.writeInt8 = d("setInt8", 8),
h.prototype.writeUint8 = d("setUint8", 8),
h.prototype.writeInt16 = d("setInt16", 16),
h.prototype.writeUint16 = d("setUint16", 16),
h.prototype.writeInt32 = d("setInt32", 32),
h.prototype.writeUint32 = d("setUint32", 32),
h.prototype.writeFloat32 = d("setFloat32", 32),
h.prototype.writeFloat64 = d("setFloat64", 64),
h.prototype.readASCIIString = function(e) {
return a(this, e)
}
,
h.prototype.readUTF8String = function(e) {
return n(this, e)
}
,
h.prototype.writeASCIIString = function(e, t) {
o(this, e, t)
}
,
h.prototype.writeUTF8String = function(e, t) {
s(this, e, t)
}
,
h.prototype.readBitStream = function(e) {
var t = new h(this._view);
return t._startIndex = this._index,
t._index = this._index,
t.length = e,
this._index += e,
t
}
,
h.prototype.writeBitStream = function(e, t) {
t || (t = e.bitsLeft);
for (var i; t > 0; )
i = Math.min(t, 32),
this.writeBits(e.readBits(i), i),
t -= i
}
,
h.prototype.readArrayBuffer = function(e) {
var t = this._view.getArrayBuffer(this._index, e);
return this._index += 8 * e,
t
}
,
h.prototype.writeArrayBuffer = function(e, t) {
this.writeBitStream(new h(e), 8 * t)
}
,
e.exports = {
BitView: u,
BitStream: h
}
}()
}
).call(t, i("dskh").Buffer)
},
Mzdc: function(e, t, i) {
"use strict";
function a(e, t) {
if (!(e instanceof t))
throw new TypeError("Cannot call a class as a function")
}
function n(e, t, i, a, n) {
for (var r = a, o = s.add(t, s.mul(i, a)), l = e.obstaclePool.getPool(), u = 0; u < l.length; u++) {
var d = l[u];
if (!(!d.active || d.dead || !d.collidable || d.isWindow || d.height < n)) {
var h = c.intersectSegment(d.collider, t, o);
h && (r = Math.min(r, s.length(s.sub(h.point, t))))
}
}
return r
}
var r = function() {
function e(e, t) {
for (var i = 0; i < t.length; i++) {
var a = t[i];
a.enumerable = a.enumerable || !1,
a.configurable = !0,
"value"in a && (a.writable = !0),
Object.defineProperty(e, a.key, a)
}
}
return function(t, i, a) {
return i && e(t.prototype, i),
a && e(t, a),
t
}
}()
, o = (i("DlZn"),
i("gKxX"))
, s = i("/2+T")
, l = i("Tf6H")
, u = (i("0od3"),
i("Bk7F"))
, c = i("9xSA")
, d = i("b/6L")
, h = i("r4ug")
, p = i("EZ6M")
, m = function() {
function e(t) {
a(this, e),
this.map = t,
this.sprites = []
}
return r(e, [{
key: "init",
value: function() {
this.isNew = !1,
this.residue = null,
this.ceilingDead = !1,
this.playedCeilingDeadFx = !1
}
}, {
key: "free",
value: function() {
for (var e = 0; e < this.sprites.length; e++) {
var t = this.sprites[e];
t.active = !1,
t.sprite.parent && t.sprite.parent.removeChild(t.sprite)
}
}
}, {
key: "allocSprite",
value: function() {
for (var e = 0; e < this.sprites.length; e++) {
var t = this.sprites[e];
if (!t.active)
return t.active = !0,
t.sprite
}
var i = new o.Sprite;
return i.anchor = new o.Point(.5,.5),
this.sprites.push({
active: !0,
sprite: i
}),
i
}
}, {
key: "updateData",
value: function(e, t, i) {
var a = this;
if (this.type = e.type,
this.pos = s.copy(e.pos),
this.rot = u.oriToRad(e.ori),
this.scale = 1,
this.ceilingDead = e.ceilingDead,
i) {
var n = u.Defs[e.type];
this.isNew = !0,
this.playedCeilingDeadFx = -1 != this.map.deadCeilingIds.indexOf(this.__id);
var r = function(e, t, i) {
var n = a.allocSprite();
return n.texture = "none" == e.sprite ? o.Texture.EMPTY : o.Texture.fromImage(e.sprite),
n.tint = e.tint,
n.alpha = e.alpha,
n.defScale = e.scale,
n.zIdx = t,
n.zOrd = i,
n
};
this.bounds = c.transform(u.getBoundingCollider(this.type), this.pos, this.rot, this.scale),
this.zIdx = n.zIdx || 0,
this.floor = {
colliders: [],
sprite: r(n.floor.img, this.zIdx, 100 * this.__id),
surface: n.floor.surface
};
for (var l = 0; l < n.floor.collision.length; l++)
this.floor.colliders.push(c.transform(n.floor.collision[l], this.pos, this.rot, this.scale));
this.map.addObstacleSprite(this.floor.sprite);
var d = Object.assign({}, {
dist: 5.5,
width: 2.75,
linger: 0,
fadeRate: 12
}, n.ceiling.vision);
this.ceiling = {
scopeIn: [],
scopeOut: [],
vision: d,
visionTicker: 0,
defaultAlpha: n.ceiling.img.alpha,
sprite: r(n.ceiling.img, 150 - this.zIdx, 100 * this.__id)
};
for (var h = 0; h < n.ceiling.scopeIn.length; h++)
this.ceiling.scopeIn.push(c.transform(n.ceiling.scopeIn[h], this.pos, this.rot, this.scale));
for (var p = 0; p < n.ceiling.scopeOut.length; p++)
this.ceiling.scopeOut.push(c.transform(n.ceiling.scopeOut[p], this.pos, this.rot, this.scale));
this.map.addObstacleSprite(this.ceiling.sprite)
}
}
}, {
key: "update",
value: function(e, t, i, a) {
var n = this.ceiling
, r = this.ceilingDead
, s = this.playedCeilingDeadFx
, l = this.map
, c = this.isNew;
if (r && !s && (l.deadCeilingIds.push(this.__id),
this.playedCeilingDeadFx = !0,
c || this.destroyCeilingFx(t, i)),
this.isNew = !1,
r && !this.residue) {
var d = u.Defs[this.type];
if (void 0 !== d.ceiling.destroy.residue) {
var h = this.allocSprite();
h.texture = o.Texture.fromImage(d.ceiling.destroy.residue),
this.floor.sprite.addChild(h),
this.residue = h
}
}
n.visionTicker -= e;
for (var p = n.vision, m = !1, g = 0; g < n.scopeIn.length; g++) {
var f = n.scopeIn[g];
if (this.canSeeInside(a.pos, p.dist, p.width, f)) {
m = !0;
break
}
}
m && (n.visionTicker = p.linger + 1e-4);
var y = n.visionTicker > 0
, v = y ? 0 : n.defaultAlpha
, b = v - n.sprite.alpha
, x = b * e * (y ? 12 : p.fadeRate);
Math.abs(x) < 1e-4 && (x = b),
n.sprite.alpha += x
}
}, {
key: "canSeeInside",
value: function(e, t, i, a) {
this.ceiling;
if (this.ceilingDead)
return !0;
var r = c.intersectCircle(a, e, t);
if (!r)
return !1;
if (r.pen >= t)
return !0;
for (var o = [e, s.add(e, s.mul(s.perp(r.dir), i)), s.sub(e, s.mul(s.perp(r.dir), i)), s.add(e, s.mul(s.perp(r.dir), .5 * i)), s.sub(e, s.mul(s.perp(r.dir), .5 * i))], l = !1, u = 0; u < o.length; u++) {
var p = o[u]
, m = c.intersectCircle(a, p, t);
if (m) {
var g = s.neg(m.dir)
, f = n(this.map, p, g, t, .5)
, y = c.intersectSegment(a, p, s.add(p, s.mul(g, t)))
, v = y && s.length(s.sub(y.point, p)) <= f;
l = l || v,
d.debug && h.addRay(p, g, t, v ? 65280 : 16711680)
}
}
return l
}
}, {
key: "destroyCeilingFx",
value: function(e, t) {
for (var i = this.type, a = this.floor, n = (this.ceiling,
u.Defs[i].ceiling.destroy), r = 0; r < a.colliders.length; r++)
for (var o = c.toAabb(a.colliders[r]), d = 0; d < n.particleCount; d++) {
var h = s.create(l.random(o.min.x, o.max.x), l.random(o.min.y, o.max.y))
, m = s.mul(s.randomUnit(), l.random(0, 15));
e.addParticle(p.Defs[n.particle], h, m)
}
t.playSound("ceiling_break_01", {
channel: "sfx",
soundPos: this.pos
})
}
}, {
key: "renderSprite",
value: function(e, t, i, a, n) {
var r = n.pointToScreen(t)
, o = n.pixels(a * e.defScale);
e.x = r.x,
e.y = r.y,
e.scale.x = o,
e.scale.y = o,
e.rotation = -i
}
}, {
key: "render",
value: function(e) {
if (this.renderSprite(this.floor.sprite, this.pos, this.rot, this.scale, e),
this.renderSprite(this.ceiling.sprite, this.pos, this.rot, this.scale, e),
d.debug) {
for (var t = 0; t < this.floor.colliders.length; t++)
h.addCollider(this.floor.colliders[t], 16711680, 0);
for (var i = 0; i < this.ceiling.scopeIn.length; i++)
h.addCollider(this.ceiling.scopeIn[i], 65280, 0);
for (var a = 0; a < this.ceiling.scopeOut.length; a++)
h.addCollider(this.ceiling.scopeOut[a], 16711935, 0)
}
}
}]),
e
}();
e.exports = m
},
"O/82": function(e, t, i) {
"use strict";
var a = {
"@metadata": {
"last-updated": "2018-02-20",
locale: "it"
},
"word-order": "svo",
"index-slogan": "2d Battle Royale",
"index-region": "Nazione",
"index-north-america": "America del Nord",
"index-europe": "Europa",
"index-asia": "Asia",
"index-players": "giocatori",
"index-play-solo": "Gioca da Solo",
"index-play-duo": "Gioca Coppia",
"index-play-squad": "Gioca Squadra",
"index-create-team": "Crea un Team",
"index-how-to-play": "Come Giocare",
"index-leave-team": "Abbandona Team",
"index-joining-team": "Partecipando al Team",
"index-creating-team": "Creando il Team",
"index-invite-link": "Link d'invito",
"index-solo": "Solo",
"index-duo": "Coppia",
"index-squad": "Squadra",
"index-auto-fill": "Auto Fill",
"index-no-fill": "No Fill",
"index-waiting-for-leader": "Aspettando che il leader avvii la partita",
"index-play": "Gioca",
"index-featured-youtuber": "Youtuber in Evidenza",
"index-settings": "Impostazioni",
"index-high-resolution": "Alta risoluzione (Clicca per aumentare la qualità)",
"index-screen-shake": "Vibrazione dello schermo",
"index-master-volume": "Volume principale",
"index-sfx-volume": "Volume effetti",
"index-music-volume": "Volume musica",
"index-team-is-full": "Il team è pieno!",
"index-failed-joining-team": "Tentativo di partecipare al team fallito.",
"index-failed-creating-team": "Tentativo di creare il team fallito.",
"index-failed-finding-game": "Tentativo di trovare una partita fallito.",
"index-failed-joining-game": "Tentativo di partecipare al team fallito.",
"index-lost-connection": "Tentativo di connettersi al team fallito.",
"index-host-closed": "L'host ha terminato la connessione.",
"index-view-more": "Guarda di più",
"index-back-to-main": "Ritorna al Menù principale",
"index-most-kills": "Più Uccisioni",
"index-total-kills": "Uccisioni Totali",
"index-total-wins": "Vittorie Totali",
"index-top-5-percent": "Top 5%",
"index-kill-death-ratio": "Rapporto Uccisioni-Morti",
"index-for": "Di",
"index-today": "Oggi",
"index-this-week": "Questa Settimana",
"index-all-time": "Di Sempre",
"index-top-100": "TOP 100",
"index-rank": "Classifica",
"index-player": "Giocatore",
"index-total-games": "Partite totali",
"index-controls": "Controlli",
"index-movement": "Movimento",
"index-movement-ctrl": "W, A, S, D",
"index-aim": "Mira",
"index-aim-ctrl": "Mouse",
"index-punch": "Pugno",
"index-shoot": "Spara",
"index-shoot-ctrl": "Click Sinistro",
"index-change-weapons": "Cambia Armi",
"index-change-weapons-ctrl": "1-4 oppure scorri la rotella",
"index-stow-weapons": "Vai in modalità pugni",
"index-stow-weapons-ctrl": "3 oppure E",
"index-swap-weapons": "Ritorna all'arma precedente",
"index-swap-weapons-ctrl": "Q",
"index-reload": "Ricarica",
"index-reload-ctrl": "R",
"index-scope-zoom": "Zoom mirino",
"index-scope-zoom-ctrl": "Click Sinistro sullo Zoom",
"index-pickup": "Raccogli",
"index-loot": "Saccheggia",
"index-revive": "Rianima",
"index-pickup-ctrl": "F",
"index-use-medical": "Usa oggetto medico",
"index-use-medical-ctrl": "Click sinistro sull'oggetto oppure 7-0",
"index-drop-item": "Lascia cadere oggetto",
"index-drop-item-ctrl": "Click destro sull'oggetto",
"index-cancel-action": "Cancella azione",
"index-cancel-action-ctrl": "X",
"index-view-map": "Apri la mappa",
"index-view-map-ctrl": "M oppure G",
"index-toggle-minimap": "Abilita/Disabilita HUD",
"index-toggle-minimap-ctrl": "V",
"index-use-ping": "Use Team Ping Wheel",
"index-use-ping-ctrl": "Tieni premuto C, dopodichè tieni premuto il tasto destro e trascina il mouse, infine rilascia il tasto destro",
"index-use-emote": "Come Giocare",
"index-use-emote-ctrl": "Tieni premuto il tasto destro e trascina il mouse, dopodichè rilascia il tasto destro",
"index-tips-1-desc": "L'obiettivo di surviv.io è di rimanere l'ultimo giocatore sopravvissuto. Hai solo una vita a partita - Non puoi rinascere!",
"index-tips-2": "PUBG in 2D",
"index-tips-2-desc": "Se hai già giocato ad altri giochi battle royale come PUBG, Fortnite o H1Z1, allora sei già a buon punto! Immagina Surviv.io come PUBG ma in 2D.",
"index-tips-3": "Saccheggia e Uccidi",
"index-tips-3-desc": "Comincerai la partita con nient'altro che un semplice marsupio. Gira per la mappa per trovare: armi, munizioni, mirini e oggetti medici. Elimina gli altri giocatori in modo da rubare il loro bottino!",
"index-tips-4": "Rosso = Dannoso!",
"index-tips-4-desc": "I giocatori non sono l'unica cosa che può recarti del danno. La zona rossa è letale e si restringe col passare del tempo, più tempo trascorrerai all'infuori della zona, maggiore sarà il danno recato. Assicurati di dare spesso un'occhiata alla mappa per rimanere al sicuro.",
"game-alive": "In Vita",
"game-reloading": "Ricaricando",
"game-using": "Usando",
"game-reviving": "Rianimando",
"game-revive-teammate": "Rianima compagno",
"game-equip": "Equipaggia",
"game-cancel": "Cancella",
"game-You": "Tu",
"game-you": "tu",
"game-themselves": "se stesso",
"game-yourself": "te stesso",
"game-you-died": "morto",
"game-player-died": "morto",
"game-with": "con",
"game-knocked-out": "messo KO",
"game-killed": "ucciso",
"game-finally-killed": "finalmente ucciso",
"game-finally-bled-out": "finally bled out",
"game-died-outside": "morto all'infuori della zona protetta",
"game-the-red-zone": "La zona rossa",
"game-waiting-for-players": "Aspettando altri giocatori",
"game-spectating": "Osservando",
"game-red-zone-advances": "La zona rossa avanzerà tra",
"game-red-zone-advancing": "La zona rossa sta avanzando, raggiungi la zona sicura!",
"game-seconds": "secondi",
"game-minutes": "minuti",
"game-minute": "minuto",
"game-m": "m",
"game-s": "s",
"game-not-enough-space": "Non hai abbastanza spazio!",
"game-item-already-owned": "Possiedi già questo oggetto!",
"game-item-already-equipped": "Oggetto già equipaggiato!",
"game-better-item-equipped": "Hai un miglior oggetto equipaggiato!",
"game-play-new-game": "Gioca una Nuova Partita",
"game-spectate": "Osserva",
"game-full-screen": "Schermo intero",
"game-sound": "Suono",
"game-quit-game": "Abbandona Gioco",
"game-return-to-game": "Ritorna al Gioco",
"game-hide-match-stats": "Nascondi le Statistiche",
"game-view-match-stats": "Guarda le Statistiche",
"game-previous-teammate": "Compagno Precedente",
"game-next-teammate": "Prossimo Compagno",
"game-spectate-previous": "",
"game-spectate-next": "",
"game-leave-game": "Abbandona Gioco",
"game-your-results": "I tuoi Risultati",
"game-chicken": "Vittoria! Stasera si mangia pollo!",
"game-won-the-game": "vinto la partita.",
"game-team-eliminated": "La tua squadra è stata eliminata.",
"game-rank": "Rank",
"game-team-rank": "Classifica Squadra",
"game-team-kills": "Uccisioni di Squadra",
"game-kill": "Uccisione",
"game-kills": "Uccisioni",
"game-damage-dealt": "Danno provocato",
"game-damage-taken": "Danno subito",
"game-survived": "Resistito per",
"game-backpack00": "Marsupio",
"game-backpack01": "Zaino piccolo",
"game-backpack02": "Zaino normale",
"game-backpack03": "Zaino militaresco",
"game-bandage": "Bende",
"game-bandage-tooltip": "Click sinistro per rigenerare il 15% di salute.",
"game-healing-tooltip": "Non puoi superare il 75% di salute.",
"game-healthkit": "Kit Medico",
"game-healthkit-tooltip": "Click sinistro per rigenerare il 100% di energia.",
"game-soda": "Soda",
"game-soda-tooltip": "Click sinistro per incrementare l'adrenalina del 25%.",
"game-adrenaline-tooltip": "L'adrenalina restituisce la salute col passare del tempo.",
"game-painkiller": "Pillole",
"game-painkiller-tooltip": "Click sinistro per incrementare l'adrenalina del 50%.",
"game-9mm": "9mm",
"game-9mm-tooltip": "Munizioni per M9, Glock, MP5, MAC-10 e UMP9.",
"game-12gauge": "Calibro 12",
"game-12gauge-tooltip": "Munizioni per M870, Saiga-12 e MP220.",
"game-762mm": "7,62mm",
"game-762mm-tooltip": "Munizioni per AK-47, M39, Mosin Nagant, OT-38 e DP-28.",
"game-556mm": "5,56mm",
"game-556mm-tooltip": "Munizioni per FAMAS, HK416, Mk 12 e M249.",
"game-chest01": "Armatura Livello 1",
"game-chest02": "Armatura Livello 2",
"game-chest03": "Armatura Livello 3",
"game-helmet01": "Casco Livello 1",
"game-helmet02": "Casco Livello 2",
"game-helmet03": "Casco Livello 3",
"game-1xscope": "1x Mirino",
"game-2xscope": "2x Mirino",
"game-4xscope": "4x Mirino",
"game-8xscope": "8x Mirino",
"game-15xscope": "15x Mirino",
"game-level-1": "Lvl. 1",
"game-level-2": "Lvl. 2",
"game-level-3": "Lvl. 3",
"game-outfitBase": "Outfit di Base",
"game-outfitRoyalFortune": "Fortuna Reale",
"game-outfitKeyLime": "Key Lime",
"game-outfitCobaltShell": "Guscio di Cobalto",
"game-outfitCarbonFiber": "Fibra di Carbonio",
"game-outfitDarkGloves": "Il Professionista",
"game-outfitGhillie": "Tuta Mimetica",
"game-outfitCamo": "Foresta Mimetica",
"game-outfitRed": "Bersaglio Facile",
"game-outfitWhite": "Vendicatore Artico",
"game-fists": "Pugno",
"game-ak47": "AK-47",
"game-dp28": "DP-28",
"game-mosin": "Mosin Nagant",
"game-m39": "M39 EMR",
"game-mp5": "MP5",
"game-mac10": "MAC-10",
"game-ump9": "UMP9",
"game-m870": "M870",
"game-mp220": "MP220",
"game-saiga": "Saiga-12",
"game-m9": "M9",
"game-glock": "Glock 18C",
"game-ot38": "OT-38",
"game-famas": "FAMAS",
"game-hk416": "HK416",
"game-mk12": "Mk 12 SPR",
"game-m249": "M249",
"game-frag": "Granata",
"game-hud-frag": "Granata",
"game-smoke": "Granata Fumogena",
"game-hud-smoke": "Fumogena",
"game-barrel_01": "un barile",
"game-silo_01": "un silo"
};
e.exports = a
},
R4DZ: function(e, t, i) {
"use strict";
var a = {
"@metadata": {
"last-updated": "2018-01-28",
locale: "th"
},
"word-order": "svo",
"index-slogan": "ศึกรอยัลรอบที่ 2",
"index-region": "ภูมิภาค",
"index-north-america": "อเมริกาเหนือ",
"index-europe": "ยุโรป",
"index-asia": "เอเชีย",
"index-players": "ผู้เล่น",
"index-play-solo": "เล่นเดี่ยว",
"index-play-duo": "เล่นคู่",
"index-play-squad": "เล่นทีม",
"index-create-team": "สร้างทีม",
"index-how-to-play": "วิธีการเล่น",
"index-leave-team": "ออกจากทีม",
"index-joining-team": "กำลังเข้าร่วมทีม",
"index-creating-team": "กำลังสร้างทีม",
"index-invite-link": "ลิงก์เชิญ",
"index-solo": "เดียว",
"index-duo": "คู่",
"index-squad": "ทีม",
"index-auto-fill": "เติมอัตโนมัติ",
"index-no-fill": "ไม่เติม",
"index-waiting-for-leader": "กำลังรอให้ผู้นำเริ่มเกม",
"index-play": "เล่น",
"index-featured-youtuber": "YouTuber ที่มีชื่อเสียง",
"index-settings": "ตั้งค่า",
"index-high-resolution": "ความละเอียดสูง (ตรวจสอบเพื่อเพิ่มคุณภาพการมองเห็น)",
"index-screen-shake": "สั่นหน้าจอ",
"index-team-is-full": "ทีมเต็มแล้ว!",
"index-failed-joining-team": "เข้าร่วมทีมล้มเหลว",
"index-failed-creating-team": "สร้างทีมล้มเหลว",
"index-failed-finding-game": "ค้นหาเกมล้มเหลว",
"index-failed-joining-game": "เข้าร่วมทีมล้มเหลว",
"index-lost-connection": "ขาดการเชื่อมต่อกับทีม",
"index-host-closed": "เซิร์ฟเวอร์ปิดการเชื่อมต่อ",
"index-view-more": "ดูเพิ่มเติม",
"index-back-to-main": "กลับไปที่เมนูหลัก",
"index-most-kills": "ฆ่ามากที่สุด",
"index-total-kills": "ฆ่าทั้งหมด",
"index-total-wins": "ชนะทั้งหมด",
"index-top-5-percent": "5 เปอร์เซ็นต์แรก",
"index-kill-death-ratio": "อัตราส่วนฆ่าตาย",
"index-for": "For",
"index-today": "วันนี้",
"index-this-week": "อาทิตย์นี้",
"index-all-time": "ตลอดเวลา",
"index-top-100": "100 อันดับแรก",
"index-rank": "อันดับ",
"index-player": "ผู้เล่น",
"index-total-games": "เกมทั้งหมด",
"index-controls": "ควบคุม",
"index-movement": "เคลื่อนไหว",
"index-movement-ctrl": "W, A, S, D",
"index-aim": "เล็ง",
"index-aim-ctrl": "เม้าส์",
"index-punch": "ชกต่อย",
"index-shoot": "ยิง",
"index-shoot-ctrl": "คลิกซ้าย",
"index-change-weapons": "เปลี่ยนอาวุธ",
"index-change-weapons-ctrl": "1 ตลอด 4 หรือล้อเลื่อน",
"index-stow-weapons": "เก็บรักษาอาวุธ (โหมดชกต่อย)",
"index-stow-weapons-ctrl": "3 หรือ E",
"index-swap-weapons": "สลับไปใช้อาวุธก่อนหน้า",
"index-swap-weapons-ctrl": "Q",
"index-reload": "โหลดใหม่",
"index-reload-ctrl": "R",
"index-scope-zoom": "ขอบเขตการซูม",
"index-scope-zoom-ctrl": "คลิกซ้ายเพื่อซูม",
"index-pickup": "เก็บ",
"index-loot": "ปล้น",
"index-revive": "ฟื้น",
"index-pickup-ctrl": "F",
"index-use-medical": "ใช้ไอเทมรักษา",
"index-use-medical-ctrl": "คลิกซ้ายที่ไอเทมหรือกด 7 ตลอด 0",
"index-drop-item": "ทิ้งไอเทม",
"index-drop-item-ctrl": "คลิกขวาที่ไอเทม",
"index-cancel-action": "ยกเลิกการดำเนินการ",
"index-cancel-action-ctrl": "X",
"index-view-map": "ดูแผนที่",
"index-view-map-ctrl": "M หรือ G",
"index-toggle-minimap": "สลับไปแผนที่เล็ก",
"index-toggle-minimap-ctrl": "V",
"game-alive": "มีชีวิต",
"game-reloading": "กำลังโหลดใหม่",
"game-using": "กำลังใช้",
"game-reviving": "กำลังฟื้นฟู",
"game-revive-teammate": "ฟื้น",
"game-equip": "ติดตั้ง",
"game-cancel": "ยกเลิก",
"game-You": "คุณ",
"game-you": "คุณ",
"game-themselves": "พวกเขาเอง",
"game-yourself": "ตัวคุณเอง",
"game-you-died": "เสียชีวิต",
"game-player-died": "เสียชีวิต",
"game-with": "ด้วย",
"game-knocked-out": "ล้ม",
"game-killed": "ฆ่า",
"game-finally-killed": "ฆ่าตายในที่สุด",
"game-finally-bled-out": "เลือดออกในที่สุด",
"game-died-outside": "ตายนอกเขตปลอดภัย",
"game-the-red-zone": "เขตอันตราย",
"game-waiting-for-players": "กำลังรอผู้เล่น",
"game-spectating": "กำลังชม",
"game-red-zone-advances": "เขตอันตรายเริ่มใน",
"game-red-zone-advancing": "กำลังเริ่มเขตอันตราย โปรดเข้าไปในเขตปลอดภัย!",
"game-seconds": "วินาที",
"game-minutes": "นาที",
"game-minute": "นาที",
"game-m": "น.",
"game-s": "ว.",
"game-not-enough-space": "พื้นที่ไม่เพียงพอ!",
"game-item-already-owned": "มีไอเทมแล้ว!",
"game-item-already-equipped": "ติดตั้งไอเทมแล้ว!",
"game-better-item-equipped": "ติดตั้งไอเทมที่ดีกว่าแล้ว!",
"game-play-new-game": "เล่นเกมใหม่",
"game-spectate": "ชม",
"game-full-screen": "เต็มหน้าจอ",
"game-sound": "เสียง",
"game-quit-game": "ออกเกม",
"game-return-to-game": "กลับไปที่เกม",
"game-hide-match-stats": "ซ่อนสถิติการจับคู่",
"game-view-match-stats": "ดูสถิติการจับคู่",
"game-previous-teammate": "เพื่อนร่วมทีมก่อนหน้านี้",
"game-next-teammate": "เพื่อนร่วมทีมต่อไป",
"game-spectate-previous": "",
"game-spectate-next": "",
"game-leave-game": "ออกจากเกม",
"game-your-results": "ผลลัพธ์ของคุณ",
"game-chicken": "อาหารเย็นวันนี้คือไก่ทอด!",
"game-won-the-game": "ชนะเกมแล้ว",
"game-team-eliminated": "ทีมของคุณแพ้แล้ว",
"game-rank": "อันดับ",
"game-team-rank": "อันดับของทีม",
"game-team-kills": "ทีมฆ่า",
"game-kill": "ฆ่า",
"game-kills": "ฆ่า",
"game-damage-dealt": "จัดการความเสียหาย",
"game-damage-taken": "ความเสียหายที่เกิดขึ้น",
"game-survived": "รอดชีวิต",
"game-backpack00": "กระเป๋า",
"game-backpack01": "แพ็คเล็ก",
"game-backpack02": "แพ็คทั่วไป",
"game-backpack03": "แพ็คกองทัพ",
"game-bandage": "ผ้าพันแผล",
"game-bandage-tooltip": "คลิกซ้ายเพื่อฟื้นฟูสุขภาพ 15",
"game-healing-tooltip": "ไม่สามารถรักษาสุขภาพได้ถึง 75",
"game-healthkit": "ชุดเครื่องมือปฐมพยาบาล",
"game-healthkit-tooltip": "คลิกซ้ายเพื่อฟื้นฟูสุขภาพ 100",
"game-soda": "โซดา",
"game-soda-tooltip": "คลิกซ้ายเพื่อเพิ่มอะดรีนาลีนภาย 25",
"game-adrenaline-tooltip": "อะดรีนาลีนช่วยฟื้นฟูสุขภาพเมื่อเวลาผ่านไป",
"game-painkiller": "ยาเม็ด",
"game-painkiller-tooltip": "คลิกซ้ายเพื่อเพิ่มอะดรีนาลีนภาย 50",
"game-9mm": "9 มม.",
"game-9mm-tooltip": "กระสุนสำหรับ M9, Glock, MP5, MAC-10 และ UMP9",
"game-12gauge": "12 เกจ์",
"game-12gauge-tooltip": "กระสุนสำหรับ M870, Saiga-12 และ MP220",
"game-762mm": "7.62 มม.",
"game-762mm-tooltip": "กระสุนสำหรับ AK-47, M39, Mosin Nagant, OT-38 และ DP-28",
"game-556mm": "5.56mm",
"game-556mm-tooltip": "กระสุนสำหรับ FAMAS, HK416, Mk 12 และ M249.",
"game-chest01": "เลเวล 1 เสื้อกั๊ก",
"game-chest02": "เลเวล 2 เสื้อกั๊ก",
"game-chest03": "เลเวล 3 เสื้อกั๊ก",
"game-helmet01": "เลเวล 1 หมวกกันน็อก",
"game-helmet02": "เลเวล 2 หมวกกันน็อก",
"game-helmet03": "เลเวล 3 หมวกกันน็อก",
"game-1xscope": "1x ขอตเขต",
"game-2xscope": "2x ขอตเขต",
"game-4xscope": "4x ขอตเขต",
"game-8xscope": "8x ขอตเขต",
"game-15xscope": "15x ขอตเขต",
"game-level-1": "เลเวล 1",
"game-level-2": "เลเวล 2",
"game-level-3": "เลเวล 3",
"game-outfitBase": "Basic Outfit",
"game-outfitRoyalFortune": "Royal Fortune",
"game-outfitKeyLime": "Key Lime",
"game-outfitCobaltShell": "Cobalt Shell",
"game-outfitCarbonFiber": "Carbon Fiber",
"game-outfitDarkGloves": "The Professional",
"game-outfitGhillie": "Ghillie Suit",
"game-outfitCamo": "Forest Camo",
"game-outfitRed": "Target Practice",
"game-outfitWhite": "Arctic Avenger",
"game-ak47": "AK-47",
"game-dp28": "DP-28",
"game-mosin": "Mosin Nagant",
"game-m39": "M39 EMR",
"game-mp5": "MP5",
"game-mac10": "MAC-10",
"game-ump9": "UMP9",
"game-m870": "M870",
"game-mp220": "MP220",
"game-saiga": "Saiga-12",
"game-m9": "M9",
"game-glock": "Glock 18C",
"game-ot38": "OT-38",
"game-barrel_01": "a barrel",
"game-silo_01": "a silo"
};
e.exports = a
},
RCak: function(e, t, i) {
"use strict";
var a = {
"@metadata": {
"last-updated": "2018-02-21",
locale: "sv"
},
"word-order": "svo",
"index-slogan": "2d Battle Royale",
"index-region": "Region",
"index-north-america": "Nordamerika",
"index-europe": "Europa",
"index-asia": "Asien",
"index-players": "spelare",
"index-play-solo": "Spela Solo",
"index-play-duo": "Spela Dubbel",
"index-play-squad": "Spela Trupp",
"index-create-team": "Skapa Lag",
"index-how-to-play": "Lär dig spela",
"index-leave-team": "Lämna lag",
"index-joining-team": "Går med i lag",
"index-creating-team": "Skapar lag",
"index-invite-link": "Inbjudningslänk",
"index-solo": "Solo",
"index-duo": "Dubbel",
"index-squad": "Trupp",
"index-auto-fill": "Autofyll",
"index-no-fill": "Ingen fyllnad",
"index-waiting-for-leader": "Väntar på att lagledaren ska starta matchen",
"index-play": "Spela",
"index-featured-youtuber": "Framhävd YouTuber",
"index-settings": "Inställningar",
"index-high-resolution": "Hög upplösning (bocka i för att höja visuell kvalitet)",
"index-screen-shake": "Skärmskakningar",
"index-team-is-full": "Laget är fullt!",
"index-failed-joining-team": "Kunde inte gå med i laget.",
"index-failed-creating-team": "Kunde inte skapa lag.",
"index-failed-finding-game": "Kunde inte hitta match.",
"index-failed-joining-game": "Kunde inte gå med i match.",
"index-lost-connection": "Tappade anslutning till laget.",
"index-host-closed": "Värden stängde anslutningen.",
"index-view-more": "Visa mer",
"index-back-to-main": "Tillbaka till huvudmenyn",
"index-most-kills": "Mest dödade",
"index-total-kills": "Totalt dödade",
"index-total-wins": "Totala vinster",
"index-top-5-percent": "Topp 5 procent",
"index-kill-death-ratio": "Kill-death ratio",
"index-for": "",
"index-today": "idag",
"index-this-week": "denna vecka",
"index-all-time": "någonsin",
"index-top-100": "Topp 100",
"index-rank": "Rank",
"index-player": "Spelare",
"index-total-games": "Antal matcher",
"index-controls": "Kontroller",
"index-movement": "Förflyttning",
"index-movement-ctrl": "W, A, S, D",
"index-aim": "Sikta",
"index-aim-ctrl": "Mus",
"index-punch": "Slå",
"index-shoot": "Skjut",
"index-shoot-ctrl": "Vänsterklick",
"index-change-weapons": "Byta vapen",
"index-change-weapons-ctrl": "1 - 4 eller skrollhjulet",
"index-stow-weapons": "Lägg undan vapen",
"index-stow-weapons-ctrl": "3 eller E",
"index-swap-weapons": "Byta tillbaka till föregående vapen",
"index-swap-weapons-ctrl": "Q",
"index-reload": "Ladda om",
"index-reload-ctrl": "R",
"index-scope-zoom": "Sikteszoom",
"index-scope-zoom-ctrl": "Vänsterklicka på zoomikonen",
"index-pickup": "Ta upp",
"index-loot": "Ta",
"index-revive": "Återuppliva",
"index-pickup-ctrl": "F",
"index-use-medical": "Använda medicinsk utrustning",
"index-use-medical-ctrl": "Vänsterklicka på föremål eller 7 - 0",
"index-drop-item": "Släpp föremål",
"index-drop-item-ctrl": "Högerklicka på föremål",
"index-cancel-action": "Avbryt aktion",
"index-cancel-action-ctrl": "X",
"index-view-map": "Visa mapp",
"index-view-map-ctrl": "M eller G",
"index-toggle-minimap": "Initiera HUD",
"index-toggle-minimap-ctrl": "V",
"index-use-ping": "Använd lagets pinghjul",
"index-use-ping-ctrl": "Håll C, håll sedan högerklick och dra musen, släpp sedan högerklick",
"index-use-emote": "Använd känslohjul",
"index-use-emote-ctrl": "Håll högerklick och dra musen, släpp sedan högerklick",
"index-tips-1-desc": "Målet med surviv.io är att bli den sista spelaren kvar. Du lever bara en gång per match - det finns bara en chans!",
"index-tips-2": "2D PUBG",
"index-tips-2-desc": 'Om du någonsin spelat andra "Herre på Täppan"-spel som PUBG, Fortnite eller H1Z1 är du redan halvvägs där! Tänk dig surviv.io som 2D PUBG.',
"index-tips-3": "Plundra och döda",
"index-tips-3-desc": "Du börjar matchen utan några andra föremål än en simpel ryggsäck. Rör dig runt kartan för att hitta föremål: vapen, ammunition, sikten och medicinska föremål. Eliminera andra spelare och ta deras föremål!",
"index-tips-4": "Rött = Dåligt!",
"index-tips-4-desc": "Spelare är inte det enda som kan skada dig. Den dödliga röda zonen kommer röra sig inåt från kartans sidor och dela ut ökande skada om du står i den. Håll ett öga på kartan och håll dig trygg.",
"game-alive": "kvar",
"game-reloading": "Laddar om",
"game-using": "Använder",
"game-reviving": "Återupplivar",
"game-revive-teammate": "Återuppliva lagkamrat",
"game-equip": "Ta upp",
"game-cancel": "Avbryt",
"game-You": "Du",
"game-you": "du",
"game-themselves": "sig själv",
"game-yourself": "dig själv",
"game-you-died": "dog",
"game-player-died": "dog",
"game-with": "med",
"game-knocked-out": "knocked out",
"game-killed": "dödade",
"game-finally-killed": "dödade till slut",
"game-finally-bled-out": "blödde ut till slut",
"game-died-outside": "dog utanför den trygga zonen",
"game-the-red-zone": "Den röda zonen",
"game-waiting-for-players": "Väntar på spelare",
"game-spectating": "Åskådar",
"game-red-zone-advances": "Den röda zonen advancerar om",
"game-red-zone-advancing": "Den röda zonen advancerar, ta dig till den säkra zonen!",
"game-seconds": "sekunder",
"game-minutes": "minuter",
"game-minute": "minuter",
"game-m": "m",
"game-s": "s",
"game-not-enough-space": "Inte tillräckligt utrymme!",
"game-item-already-owned": "Du har redan föremålet!",
"game-item-already-equipped": "Du är redan uttrustad med föremålet!",
"game-better-item-equipped": "Du har redan ett bättre föremål!",
"game-play-new-game": "Spela ny match",
"game-spectate": "Åskåda",
"game-full-screen": "Fullskärm",
"game-sound": "Ljud",
"game-quit-game": "Avsluta spel",
"game-return-to-game": "Återvänd till spel",
"game-hide-match-stats": "Dölj matchstatistik",
"game-view-match-stats": "Visa matchstatistik",
"game-previous-teammate": "Föregående lagkamrat",
"game-next-teammate": "Nästa lagkamrat",
"game-spectate-previous": "",
"game-spectate-next": "",
"game-leave-game": "Lämna match",
"game-your-results": "Dina resultat",
"game-chicken": "Vinst! Ikväll blir det kycklingmiddag!",
"game-won-the-game": "vann matchen.",
"game-team-eliminated": "Ditt lag blev eliminerat.",
"game-rank": "Rank",
"game-team-rank": "Lagrank",
"game-team-kills": "Lagets antal dödade",
"game-kill": "Dödad",
"game-kills": "Dödade",
"game-damage-dealt": "Skada utdelad",
"game-damage-taken": "Skada mottagen",
"game-survived": "Överlevde",
"game-backpack00": "Påse",
"game-backpack01": "Liten ryggsäck",
"game-backpack02": "Vanlig ryggsäck.",
"game-backpack03": "Militärryggsäck",
"game-bandage": "Bandage",
"game-bandage-tooltip": "Vänsterklicka för att återfå 15 hälsa.",
"game-healing-tooltip": "Kan inte återge över 75% liv.",
"game-healthkit": "Med Kit",
"game-healthkit-tooltip": "Vänsterklicka för att återfå 100 hälsa.",
"game-soda": "Läsk",
"game-soda-tooltip": "Vänsterklicka för att boosta adrenalin med 25.",
"game-adrenaline-tooltip": "Adrenalin återger liv över tid.",
"game-painkiller": "Piller",
"game-painkiller-tooltip": "Vänsterklicka för att boosta adrenalin med 50.",
"game-9mm": "9mm",
"game-9mm-tooltip": "Ammo för M9, Glock, MP5, MAC-10 och UMP9.",
"game-12gauge": "12 gauge",
"game-12gauge-tooltip": "Ammo för M870, Saiga-12 och MP220.",
"game-762mm": "7.62mm",
"game-762mm-tooltip": "Ammo för AK-47, M39, Mosin Nagant, OT-38 och DP-28.",
"game-556mm": "5.56mm",
"game-556mm-tooltip": "Ammo för FAMAS, HK416, Mk 12 och M249.",
"game-chest01": "Level 1 Väst",
"game-chest02": "Level 2 Väst",
"game-chest03": "Level 3 Väst",
"game-helmet01": "Level 1 Hjälm",
"game-helmet02": "Level 2 Hjälm",
"game-helmet03": "Level 3 Hjälm",
"game-1xscope": "1x Sikte",
"game-2xscope": "2x Sikte",
"game-4xscope": "4x Sikte",
"game-8xscope": "8x Sikte",
"game-15xscope": "15x Sikte",
"game-level-1": "Lvl. 1",
"game-level-2": "Lvl. 2",
"game-level-3": "Lvl. 3",
"game-outfitBase": "Vanligt Outfit",
"game-outfitRoyalFortune": "Kunlig Lycka",
"game-outfitKeyLime": "Key Lime",
"game-outfitCobaltShell": "Koboltskal",
"game-outfitCarbonFiber": "Kolfiber",
"game-outfitDarkGloves": "Proffset",
"game-outfitGhillie": "Ghilliedräkt",
"game-outfitCamo": "Skogskamouflage",
"game-outfitRed": "Måltavla",
"game-outfitWhite": "Arktisk Hämnare",
"game-outfitWoodland": "Woodland Combat",
"game-fists": "Slag",
"game-ak47": "AK-47",
"game-dp28": "DP-28",
"game-mosin": "Mosin Nagant",
"game-m39": "M39 EMR",
"game-mp5": "MP5",
"game-mac10": "MAC-10",
"game-ump9": "UMP9",
"game-m870": "M870",
"game-mp220": "MP220",
"game-saiga": "Saiga-12",
"game-m9": "M9",
"game-glock": "Glock 18C",
"game-ot38": "OT-38",
"game-famas": "FAMAS",
"game-hk416": "HK416",
"game-mk12": "Mk 12 SPR",
"game-m249": "M249",
"game-frag": "Handgranat",
"game-hud-frag": "Handgranat",
"game-smoke": "Rökgranat",
"game-hud-smoke": "Rökgranat",
"game-barrel_01": "en tunna",
"game-silo_01": "en silo"
};
e.exports = a
},
S1KI: function(e, t, i) {
"use strict";
function a(e) {
this.mute = !1,
this.masterVolume = 1,
this.soundVolume = 1,
this.musicVolume = 1,
this.baseVolume = .5,
this.audioChannels = s.Channels,
this.totalSounds = 0,
this.totalSoundsLoaded = 0,
this.loadComplete = !1,
this.cameraPos = r.create(0, 0),
this.fadeInSounds = [],
this.queuedSounds = [],
this.queuedInstances = [],
this.localActionSoundInstance = null,
this.soundInstances = [],
this.musicInstances = [],
n.Sound.initializeDefaultPlugins(),
n.Sound.defaultInterruptBehavior = n.Sound.INTERRUPT_LATE,
n.Sound.volume = .5,
n.Sound.on("fileload", this.loadHandler, this)
}
var n = i("0F1D")
, r = i("/2+T")
, o = i("0od3")
, s = i("lGyJ")
, l = i("Tf6H");
a.prototype = {
preloadSounds: function() {
for (var e in this.audioChannels)
if (this.audioChannels.hasOwnProperty(e)) {
var t = this.audioChannels[e]
, i = this.loadSounds(t.list);
for (var a in i)
i.hasOwnProperty(a) && i[a] && (this.totalSounds += 1)
}
for (var r in this.audioChannels)
if (this.audioChannels.hasOwnProperty(r)) {
var o = this.audioChannels[r]
, s = this.loadSounds(o.list);
for (var l in s)
if (s.hasOwnProperty(l) && s[l]) {
var u = s[l];
u.maxInstances ? n.Sound.registerSound(u.name, l + r, u.maxInstances) : n.Sound.registerSound(u.name, l + r)
}
}
},
loadHandler: function(e) {
this.totalSoundsLoaded += 1,
this.totalSoundsLoaded == this.totalSounds && (this.loadComplete = !0)
},
update: function(e) {
if (this.loadComplete) {
for (var t = 0; t < this.queuedSounds.length; t++) {
var i = this.queuedSounds[t]
, a = this.playSound(i.sound, i.options);
this.queuedInstances.push(a)
}
this.queuedSounds = []
}
for (var n = this.fadeInSounds.length - 1; n >= 0; n--) {
var r = this.fadeInSounds[n].instance;
if (r) {
var o = 1 * this.getTypeVolume(this.fadeInSounds[n].type);
r.volume = Math.min(o, r.volume + e),
r.volume == o && this.fadeInSounds.splice(n, 1)
}
}
for (var s = this.soundInstances.length - 1; s >= 0; s--) {
var l = this.soundInstances[s];
"playFinished" != l.playState && "playInterrupted" != l.playState && "playFailed" != l.playState || this.soundInstances.splice(s, 1)
}
for (var u = this.musicInstances.length - 1; u >= 0; u--) {
var c = this.musicInstances[u];
"playFinished" != c.playState && "playInterrupted" != c.playState && "playFailed" != c.playState || this.musicInstances.splice(u, 1)
}
},
queueSound: function(e) {
var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
return this.queuedSounds.push({
sound: e,
options: t
}),
this.queuedSounds.length - 1
},
getQueuedInstance: function(e) {
return this.queuedInstances[e]
},
playSound: function(e) {
var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
if ("none" == e)
return !1;
t.channel = t.channel || "activePlayer",
t.fadeIn = t.fadeIn || !1,
t.startSilent = t.startSilent || !1,
t.forceStart = t.forceStart || !1,
t.loop = t.loop || !1,
t.soundPos = t.soundPos || !1,
t.fallOff = t.fallOff || 0,
t.delay = t.delay || 0,
t.ignoreMinAllowable = t.ignoreMinAllowable || !1;
var i = this.audioChannels[t.channel];
if (i && (!this.mute || t.forceStart)) {
var a = !1
, s = 1 * this.baseVolume * this.getTypeVolume(i.type);
if ("activePlayer" != t.channel && t.soundPos) {
var l = r.sub(this.cameraPos, t.soundPos)
, u = r.length(l)
, c = o.clamp(Math.abs(u / i.maxRange), 0, 1)
, d = Math.pow(1 - c, 1 + 2 * t.fallOff)
, h = i.volume * d * s;
if (h > .003 || t.ignoreMinAllowable) {
var p = o.clamp(l.x / i.maxRange * -1, -1, 1);
a = n.Sound.play(e + t.channel, {
loop: t.loop ? -1 : 0,
volume: t.fadeIn || t.startSilent ? 0 : h,
pan: p,
delay: t.delay,
interrupt: n.Sound.INTERRUPT_LATE
})
}
} else {
var m = i.volume * s;
a = n.Sound.play(e + t.channel, {
loop: t.loop ? -1 : 0,
volume: t.fadeIn || t.startSilent ? 0 : m,
delay: t.delay
})
}
if (a)
return t.fadeIn && this.fadeInSounds.push({
instance: a,
type: i.type
}),
t.loop && "music" != t.channel ? this.soundInstances.push(a) : "music" == t.channel && this.musicInstances.push(a),
a
}
return !1
},
playGroup: function(e) {
var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}
, i = s.Groups[e];
if (i) {
var a = i.sounds
, n = Math.floor(l.random(0, a.length));
t.channel = i.channel;
return this.playSound(a[n], t)
}
},
updateSound: function(e, t, i) {
var a = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : 0
, n = this.audioChannels[t];
if (e && n) {
var s = 1 * this.baseVolume * this.getTypeVolume(n.type)
, l = r.sub(this.cameraPos, i)
, u = r.length(l)
, c = o.clamp(Math.abs(u / n.maxRange), 0, 1)
, d = Math.pow(1 - c, 1 + 2 * a)
, h = n.volume * d * s;
if (h > .003) {
var p = o.clamp(l.x / n.maxRange * -1, -1, 1);
return e.volume = h,
e.pan = p,
e
}
return !1
}
},
setMasterVolume: function(e) {
e = o.clamp(e, 0, 1),
n.Sound.volume = e
},
setSoundVolume: function(e) {
e = o.clamp(e, 0, 1);
for (var t = this.soundVolume > 0 ? e / this.soundVolume : 0, i = 0; i < this.soundInstances.length; i++) {
this.soundInstances[i].volume *= t
}
this.soundVolume = e
},
setMusicVolume: function(e) {
e = o.clamp(e, 0, 1);
for (var t = this.musicVolume > 0 ? e / this.musicVolume : 0, i = 0; i < this.musicInstances.length; i++) {
this.musicInstances[i].volume *= t
}
this.musicVolume = e
},
setVolume: function(e, t, i) {
if (!e)
return !1;
i = i || "sound";
var a = this.getTypeVolume(i);
e.volume = t * a
},
setMute: function(e) {
return this.mute = e,
n.Sound._setMute(this.mute),
this.mute
},
setDelay: function(e, t) {
if (!e)
return !1;
e.delay = t
},
muteToggle: function() {
return this.mute = !this.mute,
n.Sound._setMute(this.mute),
this.mute
},
stopSound: function(e) {
return !!e && e.stop()
},
stopLocalActionSound: function() {
return !!this.localActionSoundInstance && (this.localActionSoundInstance.playState == n.Sound.PLAY_SUCCEEDED ? this.localActionSoundInstance.stop() : void 0)
},
stopAll: function() {
n.Sound.stop()
},
removeSound: function(e) {
for (var t = 0; t < this.fadeInSounds.length; t++) {
var i = this.fadeInSounds[t].instance;
if (i && i.src == e) {
this.fadeInSounds.splice(t, 1);
break
}
}
n.Sound.removeSound(e)
},
registerSound: function(e) {
for (var t in this.audioChannels)
if (this.audioChannels.hasOwnProperty(t)) {
var i = this.audioChannels[t]
, a = this.loadSounds(i.list);
for (var r in a)
if (a.hasOwnProperty(r) && r == e) {
var o = a[r];
n.Sound.registerSound(o.name, r + t)
}
}
},
loadSounds: function(e) {
return s.Sounds[e]
},
isSoundPlaying: function(e) {
return !!e && e.playState == n.Sound.PLAY_SUCCEEDED
},
getTypeVolume: function(e) {
switch (e) {
case "sound":
return this.soundVolume;
case "music":
return this.musicVolume
}
return 0
}
},
e.exports = a
},
S40U: function(e, t, i) {
"use strict";
function a(e) {
var t = this;
this.keys = {},
this.keysOld = {},
this.shiftKey = !1,
this.mousePos = {
x: 0,
y: 0
},
this.mousePosOld = {
x: 0,
y: 0
},
this.mouseButton = !1,
this.mouseButtonOld = !1,
this.rightMouseButton = !1,
this.rightMouseButtonOld = !1,
this.mouseWheelState = 0,
this.elem = e,
this.bOnWindowFocus = function(e) {
t.onWindowFocus(e)
}
,
this.bOnKeyDown = function(e) {
t.onKeyDown(e)
}
,
this.bOnKeyUp = function(e) {
t.onKeyUp(e)
}
,
this.bOnMouseMove = function(e) {
t.onMouseMove(e)
}
,
this.bOnMouseDown = function(e) {
t.onMouseDown(e)
}
,
this.bOnMouseUp = function(e) {
t.onMouseUp(e)
}
,
this.bOnMouseWheel = function(e) {
t.onMouseWheel(e)
}
,
window.addEventListener("focus", this.bOnWindowFocus, !1),
window.addEventListener("keydown", this.bOnKeyDown, !1),
window.addEventListener("keyup", this.bOnKeyUp, !1),
window.addEventListener("mousemove", this.bOnMouseMove, !1),
window.addEventListener("mousedown", this.bOnMouseDown, !1),
window.addEventListener("mouseup", this.bOnMouseUp, !1),
window.addEventListener("wheel", this.bOnMouseWheel, {
capture: !1,
passive: !0
})
}
var n = Object.freeze({
Enter: 13,
Escape: 27,
Space: 32,
Left: 37,
Up: 38,
Right: 39,
Down: 40,
A: 65,
D: 68,
S: 83,
W: 87,
R: 82,
F: 70,
X: 88,
M: 77,
G: 71,
Q: 81,
E: 69,
P: 80,
V: 86,
L: 76,
One: 49,
Two: 50,
Three: 51,
Four: 52,
Five: 53,
Six: 54,
Seven: 55,
Eight: 56,
Nine: 57,
Zero: 48,
Plus: 187,
Minus: 189,
FwdSlash: 191,
Tilde: 192,
C: 16,
LeftShift: 67
});
a.prototype = {
free: function() {
window.removeEventListener("focus", this.bOnWindowFocus),
window.removeEventListener("keydown", this.bOnKeyDown),
window.removeEventListener("keyup", this.bOnKeyUp),
window.removeEventListener("mousemove", this.bOnMouseMove),
window.removeEventListener("mousedown", this.bOnMouseDown),
window.removeEventListener("mouseup", this.bOnMouseUp),
window.removeEventListener("wheel", this.bOnMouseWheel)
},
onWindowFocus: function() {
this.keys = {},
this.keysOld = {},
this.mouseButton = !1,
this.shiftKey = !1
},
flush: function() {
this.keysOld = Object.assign({}, this.keys),
this.mouseButtonOld = this.mouseButton,
this.rightMouseButtonOld = this.rightMouseButton,
this.mouseWheelState = 0,
this.shiftKey = !1
},
onKeyDown: function(e) {
this.keys[e.keyCode] = !0,
this.shiftKey |= e.shiftKey
},
onKeyUp: function(e) {
delete this.keys[e.keyCode]
},
keyDown: function(e) {
return void 0 !== this.keys[e]
},
keyPressed: function(e) {
return void 0 === this.keysOld[e] && this.keyDown(e)
},
keyReleased: function(e) {
return this.keysOld[e] && !this.keyDown(e)
},
onMouseMove: function(e) {
this.mousePosOld = Object.assign({}, this.mousePos),
this.mousePos.x = e.clientX,
this.mousePos.y = e.clientY
},
onMouseDown: function(e) {
this.mouseButton = this.mouseButton || 0 === e.button,
this.rightMouseButton = this.rightMouseButton || 2 === e.button
},
onMouseUp: function(e) {
this.mouseButton = 0 !== e.button && this.mouseButton,
this.rightMouseButton = 2 !== e.button && this.rightMouseButton
},
onMouseWheel: function(e) {
this.mouseWheelState = e.deltaY < 0 ? -1 : 1
},
mouseDown: function() {
return this.mouseButton
},
mousePressed: function() {
return !this.mouseButtonOld && this.mouseButton
},
mouseReleased: function() {
return this.mouseButtonOld && !this.mouseButton
},
rightMousePressed: function() {
return !this.rightMouseButtonOld && this.rightMouseButton
},
mouseWheel: function() {
return this.mouseWheelState
},
resetMouseWheel: function() {
this.mouseWheelState = 0
}
},
e.exports = {
InputHandler: a,
Key: n
}
},
SEs0: function(e, t, i) {
"use strict";
var a = i("juYr");
a(document).ready(function() {
var e = a("#start-menu");
a("#btn-help").click(function() {
var t = a("#start-help");
e.addClass("display-help");
var i = (t.position().top,
e.css("height"));
return t.css("display", "block"),
e.animate({
scrollTop: i
}, 1e3),
!1
});
var t = a(".modal")
, i = a(".modal-content")
, n = a("#start-bottom-right")
, r = a("#modal-customize");
a("#btn-customize").click(function() {
return r.finish(),
r.css("display", "block"),
n.fadeOut(200),
!1
});
var o = a("#modal-settings");
a("#btn-settings").click(function() {
return o.finish(),
o.css("display", "block"),
n.fadeOut(200),
!1
}),
t.find(".close").click(function() {
s()
}),
i.click(function(e) {
e.stopPropagation()
}),
a(document).click(function(e) {
a(".modal").each(function() {
"block" == a(this).css("display") && s()
})
});
var s = function(e) {
t.fadeOut(200),
n.fadeIn(200)
};
a(".modal-settings-text").click(function() {
var e = a(this).siblings("input:checkbox");
e.prop("checked", !e.is(":checked")),
e.trigger("change")
})
})
},
Tf6H: function(e, t, i) {
"use strict";
var a = i("0od3")
, n = i("/2+T")
, r = {
random: function(e, t) {
return a.lerp(Math.random(), e, t)
},
randomInt: function(e, t) {
return e = Math.ceil(e),
t = Math.floor(t),
Math.floor(Math.random() * (t - e + 1)) + e
},
randomPointInCircle: function(e) {
var t = Math.random()
, i = Math.random();
if (i < t) {
var a = t;
t = i,
i = a
}
return n.create(i * e * Math.cos(2 * Math.PI * t / i), i * e * Math.sin(2 * Math.PI * t / i))
},
hsv2rgb: function(e, t, i) {
var a, n, r, o, s, l, u, c;
switch (1 === arguments.length && (t = e.s,
i = e.v,
e = e.h),
o = Math.floor(6 * e),
s = 6 * e - o,
l = i * (1 - t),
u = i * (1 - s * t),
c = i * (1 - (1 - s) * t),
o % 6) {
case 0:
a = i,
n = c,
r = l;
break;
case 1:
a = u,
n = i,
r = l;
break;
case 2:
a = l,
n = i,
r = c;
break;
case 3:
a = l,
n = u,
r = i;
break;
case 4:
a = c,
n = l,
r = i;
break;
case 5:
a = i,
n = l,
r = u
}
return {
r: Math.round(255 * a),
g: Math.round(255 * n),
b: Math.round(255 * r)
}
},
rgb2hex: function(e) {
return (e.r << 16) + (e.g << 8) + e.b
},
hexToRgb: function(e) {
var t = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(e);
return t ? {
r: parseInt(t[1], 16),
g: parseInt(t[2], 16),
b: parseInt(t[3], 16)
} : null
},
componentToHex: function(e) {
var t = e.toString(16);
return 1 == t.length ? "0" + t : t
},
colorToDOMString: function(e, t) {
return "rgba(" + (e >> 16 & 255) + ", " + (e >> 8 & 255) + ", " + (255 & e) + ", " + t + ")"
},
updateColor: function(e, t) {
e /= 100;
var i = this.hexToRgb(t);
i.r,
i.g,
i.b;
return i.r = Math.round(i.r * e + 0 * (1 - e)),
i.g = Math.round(i.g * e + 0 * (1 - e)),
i.b = Math.round(i.b * e + 0 * (1 - e)),
this.rgb2hex(i)
},
unEntity: function(e) {
return void 0 === e ? "" : e.replace(/&amp;/g, "&").replace(/&lt;/g, "<").replace(/&gt;/g, ">")
}
};
e.exports = r
},
UWg4: function(e, t, i) {
"use strict";
var a = {
"@metadata": {
"last-updated": "2018-01-28",
locale: "zh-cn"
},
"word-order": "sov",
"index-slogan": "2d混战",
"index-region": "地区",
"index-north-america": "北美",
"index-europe": "欧洲",
"index-asia": "亚洲",
"index-players": "玩家",
"index-play-solo": "玩单挑",
"index-play-duo": "玩双人联队",
"index-play-squad": "玩四人联队",
"index-create-team": "创建联队",
"index-how-to-play": "如何玩",
"index-leave-team": "离开联队",
"index-joining-team": "加入联队",
"index-creating-team": "建立联队中",
"index-invite-link": "邀请链接",
"index-solo": "单人",
"index-duo": "双人联队",
"index-squad": "四人联队",
"index-auto-fill": "自动填充",
"index-no-fill": "不填充",
"index-waiting-for-leader": "等待领队开始游戏。",
"index-play": "开始",
"index-featured-youtuber": "精选Youtube博主",
"index-settings": "设置",
"index-high-resolution": "高分辨率(提高视觉质量)",
"index-screen-shake": "屏幕抖动",
"index-team-is-full": "联队已满!",
"index-failed-joining-team": "加入联队失败。",
"index-failed-creating-team": "创建联队失败。",
"index-failed-finding-game": "查找联队失败。",
"index-failed-joining-game": "加入游戏失败。",
"index-lost-connection": "联队连接丢失。",
"index-host-closed": "团队主持人失去连接。",
"index-view-more": "查看更多",
"index-back-to-main": "回到主界面",
"index-most-kills": "杀敌最多",
"index-total-kills": "总杀敌",
"index-total-wins": "总赢数",
"index-top-5-percent": "前5%",
"index-kill-death-ratio": "杀敌和生还比例",
"index-for": "For",
"index-today": "今日",
"index-this-week": "本周",
"index-all-time": "所有时间",
"index-top-100": "前一百",
"index-rank": "排名",
"index-player": "玩家",
"index-total-games": "总游戏数",
"index-controls": "控制",
"index-movement": "动作",
"index-movement-ctrl": "W, A, S, D键",
"index-aim": "瞄准",
"index-aim-ctrl": "鼠标",
"index-punch": "拳",
"index-shoot": "射击",
"index-shoot-ctrl": "左击",
"index-change-weapons": "更换武器",
"index-change-weapons-ctrl": "1-4或滚轮。",
"index-stow-weapons": "收起武器(拳击模式)",
"index-stow-weapons-ctrl": "3或E键",
"index-swap-weapons": "换到之前的武器",
"index-swap-weapons-ctrl": "Q键",
"index-reload": "重装",
"index-reload-ctrl": "R键",
"index-scope-zoom": "变焦范围",
"index-scope-zoom-ctrl": "左键单击放大",
"index-pickup": "拾起",
"index-loot": "掠夺",
"index-revive": "复活",
"index-pickup-ctrl": "F键",
"index-use-medical": "使用医疗物品",
"index-use-medical-ctrl": "左键单击物品或7-0",
"index-drop-item": "丢弃物品",
"index-drop-item-ctrl": "右键单击物品",
"index-cancel-action": "取消动作",
"index-cancel-action-ctrl": "X键",
"index-view-map": "查看地图",
"index-view-map-ctrl": "M或G键",
"index-toggle-minimap": "切换小地图",
"index-toggle-minimap-ctrl": "V键",
"index-use-ping": "使用联队平轮",
"index-use-ping-ctrl": "按住C键,同时按住右键然后移动鼠标,接着松开右键",
"index-use-emote": "使用表情轮",
"index-use-emote-ctrl": "按住右键然后移动鼠标,接着松开右键",
"game-alive": "存活玩家",
"game-reloading": "装弹",
"game-using": "使用",
"game-reviving": "复活中",
"game-revive-teammate": "复活队友",
"game-equip": "装备",
"game-cancel": "撤销",
"game-You": "You",
"game-you": "you",
"game-themselves": "themselves",
"game-yourself": "yourself",
"game-you-died": "died",
"game-player-died": "died",
"game-with": "with",
"game-knocked-out": "knocked out",
"game-killed": "killed",
"game-finally-killed": "finally killed",
"game-finally-bled-out": "finally bled out",
"game-died-outside": "died outside the safe zone",
"game-the-red-zone": "The red zone",
"game-waiting-for-players": "等待其他玩家",
"game-spectating": "观看中",
"game-red-zone-advances": "红色区域扩大于",
"game-red-zone-advancing": "红色区域扩大中,快到安全区域去!",
"game-seconds": "秒",
"game-minutes": "分",
"game-minute": "分",
"game-m": "分",
"game-s": "秒",
"game-not-enough-space": "空间不足!",
"game-item-already-owned": "物品已拥有!",
"game-item-already-equipped": "物品已装备!",
"game-better-item-equipped": "已装备更好物品!",
"game-play-new-game": "开始新游戏",
"game-spectate": "观看",
"game-full-screen": "全屏",
"game-sound": "声音",
"game-quit-game": "离开游戏",
"game-return-to-game": "返回游戏",
"game-hide-match-stats": "隐藏比赛数据",
"game-view-match-stats": "查看比赛数据",
"game-previous-teammate": "上个队友",
"game-next-teammate": "下个队友",
"game-spectate-previous": "",
"game-spectate-next": "",
"game-leave-game": "离开游戏",
"game-your-results": "你的战绩",
"game-chicken": "大吉大利,今晚吃鸡!",
"game-won-the-game": "游戏赢了。",
"game-team-eliminated": "你的队伍被击败了。",
"game-rank": "排名",
"game-team-rank": "联队排名",
"game-team-kills": "联队杀敌数",
"game-kill": "杀",
"game-kills": "杀",
"game-damage-dealt": "伤害输出",
"game-damage-taken": "受到伤害",
"game-survived": "生还",
"game-backpack00": "袋子",
"game-backpack01": "小包",
"game-backpack02": "常规包",
"game-backpack03": "军用包",
"game-bandage": "绷带",
"game-bandage-tooltip": "左键点击回复15点生命值。",
"game-healing-tooltip": "无法治疗75点以上的生命值。",
"game-healthkit": "医药包",
"game-healthkit-tooltip": "左键点击恢复100点生命值。",
"game-soda": "汽水",
"game-soda-tooltip": "左键点击可以增加25点的肾上腺素。",
"game-adrenaline-tooltip": "肾上腺素会随着时间的推移恢复血量值。",
"game-painkiller": "药片",
"game-painkiller-tooltip": "左键点击可以增加50点的肾上腺素。",
"game-9mm": "9毫米",
"game-9mm-tooltip": "给M9,MP5,格洛克18C,Mac-10 和 UMP9的弹药。",
"game-12gauge": "12口径",
"game-12gauge-tooltip": "给M870, Saiga-12 和 MP220的弹药。",
"game-762mm": "7.62毫米",
"game-762mm-tooltip": "给AK-47, M39, 莫辛-纳甘步枪, M39 EMR, OT-38 和 DP-28的弹药。",
"game-556mm": "5.56毫米",
"game-556mm-tooltip": "给FAMAS, HK416, Mk 12 和 M249弹药。",
"game-chest01": "一级防弹衣",
"game-chest02": "二级防弹衣",
"game-chest03": "三级防弹衣",
"game-helmet01": "一级头盔",
"game-helmet02": "二级头盔",
"game-helmet03": "三级头盔",
"game-1xscope": "1x 瞄准镜",
"game-2xscope": "2x 瞄准镜",
"game-4xscope": "4x 瞄准镜",
"game-8xscope": "8x 瞄准镜",
"game-15xscope": "15x 瞄准镜",
"game-level-1": "一级",
"game-level-2": "二级",
"game-level-3": "三级",
"game-outfitBase": "基本服装",
"game-outfitRoyalFortune": "皇家财富",
"game-outfitKeyLime": "青柠",
"game-outfitCobaltShell": "钴壳",
"game-outfitCarbonFiber": "碳纤维",
"game-outfitDarkGloves": "专业",
"game-outfitGhillie": "吉利服",
"game-outfitCamo": "森林迷彩",
"game-outfitRed": "目标练习",
"game-outfitWhite": "北极复仇者",
"game-ak47": "AK-47",
"game-dp28": "DP-28",
"game-mosin": "Mosin Nagant",
"game-m39": "M39 EMR",
"game-mp5": "MP5",
"game-mac10": "MAC-10",
"game-ump9": "UMP9",
"game-m870": "M870",
"game-mp220": "MP220",
"game-saiga": "Saiga-12",
"game-m9": "M9",
"game-glock": "Glock 18C",
"game-ot38": "OT-38",
"game-barrel_01": "a barrel",
"game-silo_01": "a silo"
};
e.exports = a
},
"W+3y": function(e, t, i) {
"use strict";
var a = {
"@metadata": {
"last-updated": "2018-03-31",
locale: "en"
},
"word-order": "svo",
"index-slogan": "2d Battle Royale",
"index-region": "Region",
"index-north-america": "North America",
"index-europe": "Europe",
"index-asia": "Asia",
"index-players": "players",
"index-play-solo": "Play Solo",
"index-play-duo": "Play Duo",
"index-play-squad": "Play Squad",
"index-create-team": "Create Team",
"index-leave-team": "Leave Team",
"index-joining-team": "Joining Team",
"index-creating-team": "Creating Team",
"index-invite-link": "Invite link",
"index-solo": "Solo",
"index-duo": "Duo",
"index-squad": "Squad",
"index-auto-fill": "Auto Fill",
"index-no-fill": "No Fill",
"index-waiting-for-leader": "Waiting for leader to start game",
"index-play": "Play",
"index-featured-youtuber": "Featured YouTuber",
"index-settings": "Settings",
"index-high-resolution": "High resolution (check to increase visual quality)",
"index-screen-shake": "Screen shake",
"index-master-volume": "Master Volume",
"index-sfx-volume": "SFX Volume",
"index-music-volume": "Music Volume",
"index-team-is-full": "Team is full!",
"index-failed-joining-team": "Failed joining team.",
"index-failed-creating-team": "Failed creating team.",
"index-failed-finding-game": "Failed finding game.",
"index-failed-joining-game": "Failed joining game.",
"index-lost-connection": "Lost connection to team.",
"index-host-closed": "Host closed the connection.",
"index-invalid-protocol": "Old client version.",
"index-view-more": "View More",
"index-back-to-main": "Back to Main Menu",
"index-most-kills": "Most kills",
"index-total-kills": "Total kills",
"index-total-wins": "Total wins",
"index-top-5-percent": "Top 5 percent",
"index-kill-death-ratio": "Kill-death ratio",
"index-mode": "Mode",
"index-for": "For",
"index-today": "Today",
"index-this-week": "This week",
"index-all-time": "All time",
"index-top-100": "TOP 100",
"index-rank": "Rank",
"index-player": "Player",
"index-total-games": "Total Games",
"index-controls": "Controls",
"index-movement": "Movement",
"index-movement-ctrl": "W, A, S, D",
"index-aim": "Aim",
"index-aim-ctrl": "Mouse",
"index-punch": "Melee",
"index-shoot": "Shoot",
"index-shoot-ctrl": "Left-Click",
"index-change-weapons": "Change Weapons",
"index-change-weapons-ctrl": "1 through 4 or Scroll Wheel",
"index-stow-weapons": "Stow Weapons (Melee Mode)",
"index-stow-weapons-ctrl": "3 or E",
"index-swap-weapons": "Swap to Previous Weapon",
"index-swap-weapons-ctrl": "Q",
"index-reload": "Reload",
"index-reload-ctrl": "R",
"index-scope-zoom": "Scope Zoom",
"index-scope-zoom-ctrl": "Left-Click on Zoom",
"index-pickup": "Pickup",
"index-loot": "Loot",
"index-revive": "Revive",
"index-pickup-ctrl": "F",
"index-use-medical": "Use Medical Item",
"index-use-medical-ctrl": "Left-Click on Item or 7 through 0",
"index-drop-item": "Drop Item",
"index-drop-item-ctrl": "Right-Click on Item",
"index-cancel-action": "Cancel Action",
"index-cancel-action-ctrl": "X",
"index-view-map": "View Map",
"index-view-map-ctrl": "M or G",
"index-toggle-minimap": "Toggle Minimap",
"index-toggle-minimap-ctrl": "V",
"index-use-ping": "Use Team Ping Wheel",
"index-use-ping-ctrl": "Hold C, then hold Right-Click and drag mouse, then release Right-Click",
"index-use-emote": "Use Emote Wheel",
"index-use-emote-ctrl": "Hold Right-Click and drag mouse, then release Right-Click",
"index-how-to-play": "How to Play",
"index-tips-1-desc": "The goal of surviv.io is to be the last player standing. You only live once per game - there is no respawn!",
"index-tips-2": "2D PUBG",
"index-tips-2-desc": "If you've played other battle royale games like PUBG, Fortnite or H1Z1, then you're already halfway there! Think of surviv.io as 2D PUBG (with slightly less desync and more chicken).",
"index-tips-3": "Loot and Kill",
"index-tips-3-desc": "You'll begin the game with no items other than a simple backpack. Move around the map to find loot: weapons, ammo, scopes, and medical items. Eliminate other players and you can take their loot!",
"index-tips-4": "Red = Bad!",
"index-tips-4-desc": "Players aren't the only thing that can hurt you. The deadly red zone will move in from the sides of the map and deal increasingly greater damage if you stand in it. Keep an eye on the map and stay safe.",
"game-alive": "Alive",
"game-reloading": "Reloading",
"game-using": "Using",
"game-reviving": "Reviving",
"game-revive-teammate": "Revive Teammate",
"game-equip": "Equip",
"game-cancel": "Cancel",
"game-open-door": "Open Door",
"game-close-door": "Close Door",
"game-You": "You",
"game-you": "you",
"game-themselves": "themselves",
"game-yourself": "yourself",
"game-you-died": "died",
"game-player-died": "died",
"game-with": "with",
"game-knocked-out": "knocked out",
"game-killed": "killed",
"game-finally-killed": "finally killed",
"game-finally-bled-out": "finally bled out",
"game-died-outside": "died outside the safe zone",
"game-the-red-zone": "The red zone",
"game-waiting-for-players": "Waiting for players",
"game-spectating": "Spectating",
"game-red-zone-advances": "Red zone advances in",
"game-red-zone-advancing": "Red zone advancing! Move to the safe zone",
"game-seconds": "seconds",
"game-minutes": "minutes",
"game-minute": "minute",
"game-m": "m",
"game-s": "s",
"game-not-enough-space": "Not enough space!",
"game-item-already-owned": "Item already owned!",
"game-item-already-equipped": "Item already equipped!",
"game-better-item-equipped": "Better item equipped!",
"game-play-new-game": "Play New Game",
"game-spectate": "Spectate",
"game-full-screen": "Full Screen",
"game-sound": "Sound",
"game-quit-game": "Quit Game",
"game-return-to-game": "Return to Game",
"game-hide-match-stats": "Hide Match Stats",
"game-view-match-stats": "View Match Stats",
"game-previous-teammate": "Previous Teammate",
"game-next-teammate": "Next Teammate",
"game-spectate-previous": "Previous Player",
"game-spectate-next": "Next Player",
"game-leave-game": "Leave Game",
"game-your-results": "Your Results",
"game-chicken": "Winner winner chicken dinner!",
"game-won-the-game": "won the game.",
"game-team-eliminated": "Your team was eliminated.",
"game-solo-rank": "Solo Rank",
"game-duo-rank": "Duo Rank",
"game-squad-rank": "Squad Rank",
"game-rank": "Rank",
"game-team-rank": "Team Rank",
"game-team-kills": "Team Kills",
"game-kill": "Kill",
"game-kills": "Kills",
"game-damage-dealt": "Damage Dealt",
"game-damage-taken": "Damage Taken",
"game-survived": "Survived",
"game-backpack00": "Pouch",
"game-backpack01": "Small Pack",
"game-backpack02": "Regular Pack",
"game-backpack03": "Military Pack",
"game-bandage": "Bandage",
"game-bandage-tooltip": "Left-click to restore 15 health.",
"game-healing-tooltip": "Cannot heal past 75 health.",
"game-healthkit": "Med Kit",
"game-healthkit-tooltip": "Left-click to restore 100 health.",
"game-soda": "Soda",
"game-soda-tooltip": "Left-click to boost adrenaline by 25.",
"game-adrenaline-tooltip": "Adrenaline restores health over time.",
"game-painkiller": "Pills",
"game-painkiller-tooltip": "Left-click to boost adrenaline by 50.",
"game-9mm": "9mm",
"game-9mm-tooltip": "Ammo for M9, Glock, MP5, MAC-10 and UMP9.",
"game-12gauge": "12 gauge",
"game-12gauge-tooltip": "Ammo for M870, Saiga-12 and MP220.",
"game-762mm": "7.62mm",
"game-762mm-tooltip": "Ammo for AK-47, M39, Mosin Nagant, OT-38 and DP-28.",
"game-556mm": "5.56mm",
"game-556mm-tooltip": "Ammo for FAMAS, HK416, Mk 12 and M249.",
"game-chest01": "Level 1 Vest",
"game-chest02": "Level 2 Vest",
"game-chest03": "Level 3 Vest",
"game-helmet01": "Level 1 Helmet",
"game-helmet02": "Level 2 Helmet",
"game-helmet03": "Level 3 Helmet",
"game-1xscope": "1x Scope",
"game-2xscope": "2x Scope",
"game-4xscope": "4x Scope",
"game-8xscope": "8x Scope",
"game-15xscope": "15x Scope",
"game-level-1": "Lvl. 1",
"game-level-2": "Lvl. 2",
"game-level-3": "Lvl. 3",
"game-outfitBase": "Basic Outfit",
"game-outfitRoyalFortune": "Royal Fortune",
"game-outfitKeyLime": "Key Lime",
"game-outfitCobaltShell": "Cobalt Shell",
"game-outfitCarbonFiber": "Carbon Fiber",
"game-outfitDarkGloves": "The Professional",
"game-outfitGhillie": "Ghillie Suit",
"game-outfitCamo": "Forest Camo",
"game-outfitRed": "Target Practice",
"game-outfitWhite": "Arctic Avenger",
"game-outfitWoodland": "Woodland Combat",
"game-outfitJester": "Jester's Folly",
"game-fists": "Fists",
"game-ak47": "AK-47",
"game-dp28": "DP-28",
"game-mosin": "Mosin Nagant",
"game-m39": "M39 EMR",
"game-mp5": "MP5",
"game-mac10": "MAC-10",
"game-ump9": "UMP9",
"game-m870": "M870",
"game-mp220": "MP220",
"game-saiga": "Saiga-12",
"game-m9": "M9",
"game-m9_dual": "Dual M9",
"game-hud-m9_dual": "M9",
"game-glock": "Glock 18C",
"game-glock_dual": "Dual Glock 18C",
"game-hud-glock_dual": "Glock 18C",
"game-ot38": "OT-38",
"game-ot38_dual": "Dual OT-38",
"game-hud-ot38_dual": "OT-38",
"game-famas": "FAMAS",
"game-hk416": "HK416",
"game-mk12": "Mk 12 SPR",
"game-m249": "M249",
"game-frag": "Frag Grenade",
"game-hud-frag": "Frag",
"game-smoke": "Smoke Grenade",
"game-hud-smoke": "Smoke",
"game-barrel_01": "a barrel",
"game-silo_01": "a silo",
"game-oven_01": "an oven"
};
e.exports = a
},
XrLF: function(e, t, i) {
"use strict";
var a = {
Slith: {
name: "Slith",
link: "https://www.youtube.com/watch?v=sfxbQwgn3qo",
weight: 25,
language: "ru"
},
"Мишка и Юля": {
name: "Мишка и Юля",
link: "https://www.youtube.com/watch?v=LMjviRhDIX8",
weight: 5,
language: "ru"
},
"Демастер": {
name: "Демастер",
link: "https://www.youtube.com/watch?v=gRkMeWKxpVE",
weight: 25,
language: "ru"
},
"KINGOFDARKNESSCERBERUS АИД": {
name: "KINGOFDARKNESSCERBERUS АИД",
link: "https://www.youtube.com/watch?v=q84ofnRjPe0",
weight: 25,
language: "ru"
},
"Vinni Biesiu": {
name: "Vinni Biesiu",
link: "https://www.youtube.com/watch?v=tCxedpa7alg",
weight: 25,
language: "pl"
},
Plepsu: {
name: "Plepsu",
link: "https://www.youtube.com/watch?v=DpenTcH93uk",
weight: 50,
language: "pl"
},
TheWillyrex: {
name: "TheWillyrex",
link: "https://www.youtube.com/watch?v=yKFA4o2TL6g",
weight: 25,
language: "es"
},
dedpoio: {
name: "dedpoio",
link: "https://www.youtube.com/watch?v=KxE1PnIfSzo",
weight: 5,
language: "es"
},
Dawgun: {
name: "Dawgun",
link: "https://www.youtube.com/watch?v=1WsdLvV2BFk",
weight: 25,
language: "es"
},
Vikkstar123: {
name: "Vikkstar123",
link: "https://www.youtube.com/watch?v=2aJx6_nXF04",
weight: 5,
language: "en"
},
Pidyohago: {
name: "Pidyohago",
link: "https://www.youtube.com/watch?v=mEr1mmp6Vgs",
weight: 25,
language: "en"
},
iXPLODE: {
name: "iXPLODE",
link: "https://www.youtube.com/watch?v=Nzfuzuf85aA",
weight: 5,
language: "en"
},
CorruptX: {
name: "CorruptX",
link: "https://www.youtube.com/watch?v=nw6jGzlUZKA",
weight: 50,
language: "en"
},
"Baxtrix[EN]": {
name: "Baxtrix [EN]",
link: "https://www.youtube.com/watch?v=Eo6xQjptoNM",
weight: 50,
language: "en"
},
Shyguymask: {
name: "Shyguymask",
link: "https://www.youtube.com/watch?v=2f1zIWVSi6Q",
weight: 25,
language: "en"
},
Yuukun: {
name: "Yuukun",
link: "https://www.youtube.com/watch?v=Ujqdpvpw_1I",
weight: 25,
language: "en"
},
iHASYOU: {
name: "iHASYOU",
link: "https://www.youtube.com/watch?v=wsmi7_JfYWs",
weight: 25,
language: "en"
},
"MasterOv Gaming": {
name: "MasterOv Gaming",
link: "https://www.youtube.com/watch?v=YBRXO571d4E",
weight: 50,
language: "en"
},
Godenot: {
name: "Godenot",
link: "https://www.youtube.com/watch?v=kICXbR9R5d0",
weight: 25,
language: "pt"
},
MaxPalaro: {
name: "MaxPalaro",
link: "https://www.youtube.com/watch?v=jk4jmvKBXPw",
weight: 5,
language: "pt"
},
TazerCraft: {
name: "TazerCraft",
link: "https://www.youtube.com/watch?v=_CfPEjsuGIo",
weight: 25,
language: "pt"
},
SkizzTV: {
name: "SkizzTV",
link: "https://www.youtube.com/watch?v=6EWokdQXCwI",
weight: 50,
language: "th"
},
"MR.CHAT. TV": {
name: "MR.CHAT. TV",
link: "https://www.youtube.com/watch?v=xRm7vQUxZoM",
weight: 25,
language: "th"
},
"TAEJK.TV": {
name: "TAEJK.TV",
link: "https://www.youtube.com/watch?v=0nDWyNu-oVQ",
weight: 25,
language: "th"
},
Zombey: {
name: "Zombey",
link: "https://www.youtube.com/watch?v=wFFgDfSNh6g",
weight: 25,
language: "de"
},
GermanLetsPlay: {
name: "GermanLetsPlay",
link: "https://www.youtube.com/watch?v=iVMXANq9GGc",
weight: 50,
language: "de"
},
"der Paedagoge": {
name: "der Paedagoge",
link: "https://www.youtube.com/watch?v=WdCNvlGbGSk",
weight: 25,
language: "de"
},
Dr_Horse: {
name: "Dr_Horse",
link: "https://www.youtube.com/watch?v=E0IPLNNxBNs",
weight: 50,
language: "fr"
},
FuriousJumper: {
name: "Furious Jumper",
link: "https://www.youtube.com/watch?v=sXQ34reKjFo",
weight: 25,
language: "fr"
},
Baxtrix: {
name: "Baxtrix",
link: "https://www.youtube.com/watch?v=wXPnNThOeOU",
weight: 25,
language: "cs"
},
"우왁굳의게임방송": {
name: "우왁굳의게임방송",
link: "https://www.youtube.com/watch?v=iUc-sqG8y-E",
weight: 25,
language: "ko"
},
"겜브링": {
name: "겜브링 (GGAM BRING)",
link: "https://www.youtube.com/watch?v=AOKh7T_4xPo",
weight: 25,
language: "ko"
},
"풍월량": {
name: "풍월량",
link: "https://www.youtube.com/watch?v=cSZqiP177Z0",
weight: 25,
language: "ko"
},
"똘똘똘이의 유튜브": {
name: "똘똘똘이의 유튜브",
link: "https://www.youtube.com/watch?v=y7VmbtOQNuM",
weight: 25,
language: "ko"
},
"さよドラ": {
name: "さよドラ",
link: "https://www.youtube.com/watch?v=IoCjtJ4Ox5A",
weight: 25,
language: "ja"
},
"あしあと": {
name: "あしあと",
link: "https://www.youtube.com/watch?v=KSptXhiwQEc",
weight: 50,
language: "ja"
}
};
e.exports = a
},
"YEz/": function(e, t, i) {
"use strict";
function a(e) {
this.active = !1
}
function n(e, t) {
this.particleBarn = e,
this.audioManager = t,
this.explosions = []
}
var r = (i("gKxX"),
i("+0OL"))
, o = (i("8iex"),
i("0od3"))
, s = i("Tf6H")
, l = i("/2+T")
, u = i("b/6L")
, c = i("r4ug")
, d = i("EZ6M")
, h = {
frag: {
burst: {
particle: "explosionBurst",
scale: 1,
sound: {
grass: "explosion_01",
water: "explosion_02"
},
pan: !1,
time: 0
},
shakeStr: .2,
shakeDur: .35,
lifetime: 2
},
smoke: {
burst: {
particle: "explosionBurst",
scale: 0,
sound: {
grass: "explosion_smoke_01",
water: "explosion_smoke_01"
},
pan: !0,
time: 0
},
shakeStr: 0,
shakeDur: 0,
lifetime: 6
},
barrel: {
burst: {
particle: "explosionBurst",
scale: 1,
sound: {
grass: "explosion_01",
water: "explosion_02"
},
pan: !1,
time: 0
},
shakeStr: .2,
shakeDur: .35,
lifetime: 2
}
};
a.prototype = {
init: function(e, t) {
var i = r.explosions[e].explosionType
, a = h[i];
this.active = !0,
this.done = !1,
this.type = e,
this.pos = l.copy(t),
this.ticker = 0,
this.lifetime = a.lifetime,
this.soundInstance = null,
this.soundUpdateThrottle = 0
},
free: function() {
this.active = !1
},
update: function(e, t, i, a, n) {
var u = r.explosions[this.type].explosionType
, c = h[u];
if (0 == this.ticker) {
t.addParticle(d.Defs[c.burst.particle], this.pos, l.create(0, 0), c.burst.scale, 0, null);
var p = a.getGroundSurface(this.pos)
, m = "water" == p ? c.burst.sound.water : c.burst.sound.grass;
if (this.soundInstance = i.playSound(m, {
channel: "sfx",
soundPos: this.pos
}),
"water" == p)
for (var g = 0; g < 10; g++) {
var f = l.add(this.pos, l.mul(l.randomUnit(), s.random(0, 5)));
a.addRipple(f, .06 * g)
}
}
this.soundInstance && this.soundUpdateThrottle < 0 ? (this.soundUpdateThrottle = .1,
this.soundInstance = i.updateSound(this.soundInstance, "sfx", this.pos)) : this.soundUpdateThrottle -= e,
this.ticker += e;
var y = Math.min(this.ticker / c.shakeDur, 1)
, v = o.lerp(y, c.shakeStr, 0);
n.addShake(this.pos, v),
this.ticker >= this.lifetime && (this.active = !1)
}
},
n.prototype = {
addExplosion: function(e, t) {
for (var i = null, n = 0; n < this.explosions.length; n++)
if (!this.explosions[n].active) {
i = this.explosions[n];
break
}
i || (i = new a(this),
this.explosions.push(i)),
i.init(e, t, this.audioManager)
},
update: function(e, t, i) {
for (var a = 0; a < this.explosions.length; a++) {
var n = this.explosions[a];
n.active && (n.update(e, this.particleBarn, this.audioManager, t, i),
n.active || n.free())
}
},
render: function(e) {
for (var t = 0; t < this.explosions.length; t++) {
var i = this.explosions[t];
if (i.active && u.debug) {
var a = r.explosions[i.type];
c.addCircle(i.pos, a.rad.min, 16711680, 0),
c.addCircle(i.pos, a.rad.max, 16750848, 0)
}
}
}
},
e.exports = {
ExplosionBarn: n
}
},
YUyC: function(e, t, i) {
"use strict";
function a(e, t, i) {
for (var a = n.map, s = a.shoreDivisions, l = a.shoreInset, u = a.shoreVariation, c = a.grassInset, d = a.grassVariation, h = i, p = function(e, t) {
h = 16807 * h % 2147483647;
var i = h / 2147483647;
return r.lerp(i, e, t)
}, m = {
x: l,
y: l
}, g = {
x: e - l,
y: l
}, f = {
x: l,
y: t - l
}, y = {
x: e - l,
y: t - l
}, v = g.x - m.x, b = v / (s + 1), x = [m], _ = 1; _ <= s; ++_)
x.push({
x: m.x + b * _,
y: m.y + p(-u, u)
});
x.push(g);
for (var w = 1; w <= s; ++w)
x.push({
x: g.x + p(-u, u),
y: g.y + b * w
});
x.push(y);
for (var T = 1; T <= s; ++T)
x.push({
x: y.x - b * T,
y: y.y + p(-u, u)
});
x.push(f);
for (var k = 1; k <= s; ++k)
x.push({
x: f.x + p(-u, u),
y: f.y - b * k
});
var S = o.create(e / 2, t / 2);
return {
shore: x,
grass: x.map(function(e) {
var t = o.normalize(o.sub(S, e))
, i = p(-d, d)
, a = c + i;
return o.add(e, o.mul(t, a))
})
}
}
var n = i("+0OL")
, r = i("0od3")
, o = (i("Tf6H"),
i("/2+T"));
e.exports = {
generateTerrain: a
}
},
YfyY: function(e, t, i) {
"use strict";
function a(e, t) {
if (!(e instanceof t))
throw new TypeError("Cannot call a class as a function")
}
function n(e, t) {
var i = {
join_full: t.translate("index-team-is-full"),
join_not_found: t.translate("index-failed-joining-team"),
create_failed: t.translate("index-failed-creating-team"),
join_failed: t.translate("index-failed-joining-team"),
join_game_failed: t.translate("index-failed-joining-game"),
lost_conn: t.translate("index-lost-connection"),
find_game_error: t.translate("index-failed-finding-game"),
find_game_full: t.translate("index-failed-finding-game"),
find_game_invalid_protocol: t.translate("index-invalid-protocol")
};
return i[e] || i.lost_conn
}
var r = function() {
function e(e, t) {
for (var i = 0; i < t.length; i++) {
var a = t[i];
a.enumerable = a.enumerable || !1,
a.configurable = !0,
"value"in a && (a.writable = !0),
Object.defineProperty(e, a.key, a)
}
}
return function(t, i, a) {
return i && e(t.prototype, i),
a && e(t, a),
t
}
}()
, o = i("juYr")
, s = i("+0OL")
, l = (i("0od3"),
i("gtMM"))
, u = i("85i3")
, c = i("Jr6A")
, d = function() {
function e(t, i, n, r) {
var s = this;
a(this, e),
this.playBtn = o("#btn-start-team"),
this.serverWarning = o("#server-warning"),
this.teamOptions = o("#btn-team-queue-duo, #btn-team-fill-auto, #btn-team-fill-none"),
this.serverSelect = o("#team-server-select"),
this.queueDuo = o("#btn-team-queue-duo"),
this.queueSquad = o("#btn-team-queue-squad"),
this.fillAuto = o("#btn-team-fill-auto"),
this.fillNone = o("#btn-team-fill-none"),
this.onLeave = null,
this.config = t,
this.pingTest = i,
this.localization = n,
this.joinGameFn = r,
this.active = !1,
this.joined = !1,
this.create = !1,
this.joiningGame = !1,
this.ws = null,
this.keepAliveTimeout = 0,
this.regionPops = {},
this.playerData = {},
this.roomData = {},
this.players = [],
this.localPlayerIdx = 0,
this.isLeader = !0,
this.serverSelect.change(function() {
var e = s.serverSelect.find(":selected").val();
s.pingTest.start(e),
s.setRoomProperty("region", e)
}),
this.queueDuo.click(function() {
s.players.length <= 2 && s.setRoomProperty("teamMode", 2)
}),
this.queueSquad.click(function() {
s.setRoomProperty("teamMode", 4)
}),
this.fillAuto.click(function() {
s.setRoomProperty("autoFill", !0)
}),
this.fillNone.click(function() {
s.setRoomProperty("autoFill", !1)
}),
this.playBtn.on("click", function() {
s.tryStartGame()
}),
o("#team-copy-url, #team-desc-text").click(function(e) {
var t = o("<div/>", {
class: "team-copy-toast",
html: "Copied!"
});
o("#start-menu-wrapper").append(t),
t.css({
left: e.pageX - parseInt(t.css("width")) / 2,
top: o("#team-copy-url").offset().top
}),
t.animate({
top: "-=20",
opacity: 1
}, {
queue: !1,
duration: 300,
complete: function() {
o(this).fadeOut(250, function() {
o(this).remove()
})
}
});
var i = o("#team-url").html()
, a = o("<input>");
o("body").append(a),
a.val(i).select(),
document.execCommand("copy"),
a.remove()
})
}
return r(e, [{
key: "update",
value: function(e) {
this.joined && (this.keepAliveTimeout -= e * this.msgStartOpacityDir,
this.keepAliveTimeout < 0 && (this.keepAliveTimeout = 2e4,
this.sendMessage("keepAlive", {})))
}
}, {
key: "connect",
value: function(e, t) {
var i = this;
if (!this.active || t !== this.roomData.roomUrl) {
var a = window.location.host;
if (!e) {
var n = l.decodeUrl(t);
a = "app-" + l.appIdToString(n.appId) + ".surviv.io"
}
var r = "https:" == window.location.protocol
, o = r ? "wss:" : "ws:"
, s = o + "//" + a + "/team";
this.active = !0,
this.joined = !1,
this.create = e,
this.joiningGame = !1,
this.playerData = {
name: this.config.get("playerName")
},
this.roomData = {
roomUrl: t,
region: this.config.get("region"),
teamMode: this.config.get("teamMode"),
autoFill: this.config.get("teamAutoFill"),
findingGame: !1,
lastError: ""
},
this.refreshUi();
try {
this.ws = new WebSocket(s),
this.ws.onerror = function(e) {
i.ws && i.ws.close()
}
,
this.ws.onclose = function() {
var t = "";
i.joiningGame || (t = i.joined ? "lost_conn" : e ? "create_failed" : "join_failed"),
i.leave(t)
}
,
this.ws.onopen = function() {
e ? i.sendMessage("create", {
roomData: i.roomData,
playerData: i.playerData
}) : i.sendMessage("join", {
roomUrl: i.roomData.roomUrl,
playerData: i.playerData
})
}
,
this.ws.onmessage = function(e) {
if (i.active) {
var t = JSON.parse(e.data);
i.onMessage(t.type, t.data)
}
}
} catch (t) {
this.leave(e ? "create_failed" : "join_failed")
}
}
}
}, {
key: "leave",
value: function(e) {
var t = (this.serverWarning,
this.config)
, i = this.roomData
, a = this.playerData;
if (this.active) {
this.ws && this.ws.close(),
this.ws = null,
this.active = !1,
this.joined = !1,
this.refreshUi(),
t.set("playerName", a.name),
t.set("region", i.region),
t.set("teamMode", i.teamMode),
t.set("teamAutoFill", i.autoFill);
var r = "";
e && "" != e && (r = n(e, this.localization),
u.storeGeneric("teamError", e)),
this.onLeave(r)
}
}
}, {
key: "onMessage",
value: function(e, t) {
var i = this
, a = (this.config,
this.playerData);
this.roomData,
this.players;
switch (e) {
case "state":
this.joined = !0;
var n = this.roomData;
this.roomData = t.room,
this.players = t.players,
this.localPlayerIdx = t.localPlayerIdx,
this.isLeader = this.players.length > 0 && this.players[this.localPlayerIdx].isLeader,
this.isLeader && (this.roomData.region = n.region,
this.roomData.autoFill = n.autoFill,
this.roomData.teamMode = n.teamMode),
this.refreshUi();
break;
case "joinGame":
this.joiningGame = !0,
t.gameArgs.name = a.name,
this.joinGameFn(t.gameArgs, t.matchData, function() {
i.leave("join_game_failed"),
u.storeGeneric("joinFail", "teamPlay")
});
break;
case "keepAlive":
break;
case "error":
this.leave(t.type)
}
}
}, {
key: "sendMessage",
value: function(e, t) {
var i = this.ws;
if (i)
if (i.readyState === i.OPEN) {
var a = JSON.stringify({
type: e,
data: t
});
i.send(a)
} else
i.close()
}
}, {
key: "setRegionPops",
value: function(e) {
this.regionPops = e
}
}, {
key: "setRoomProperty",
value: function(e, t) {
this.isLeader && this.roomData[e] != t && (this.roomData[e] = t,
this.sendMessage("setRoomProps", this.roomData))
}
}, {
key: "tryStartGame",
value: function() {
var e = this.pingTest
, t = this.roomData;
this.players;
if (this.isLeader && !t.findingGame) {
var i = s.protocolVersion
, a = t.region
, n = c.getParameterByName("region");
void 0 !== n && n.length > 0 && (a = n);
var r = e.getZones(a)
, o = c.getParameterByName("zone");
void 0 !== o && o.length > 0 && (r = [o]);
var l = {
version: i,
region: a,
zones: r
};
this.sendMessage("playGame", l),
this.roomData.findingGame = !0,
this.refreshUi()
}
}
}, {
key: "refreshUi",
value: function() {
var e = this.playBtn
, t = this.serverWarning
, i = this.teamOptions
, a = this.serverSelect
, r = this.queueDuo
, s = this.queueSquad
, l = this.fillAuto
, u = this.fillNone
, c = this.active
, d = this.joined
, h = this.create
, p = this.joiningGame
, m = this.regionPops
, g = (this.playerData,
this.roomData)
, f = this.players
, y = this.localPlayerIdx
, v = this.isLeader;
o("#team-menu").css("display", c ? "block" : "none"),
o("#start-menu").css("display", c ? "none" : "block"),
o("#news-block").css("display", c ? "none" : "block"),
o("#social-share-block").css("display", c ? "none" : "block");
var b = "" != g.lastError
, x = n(g.lastError, this.localization);
if (t.css("opacity", b ? 1 : 0),
t.html(x),
c && (o("#team-menu-joining-text").css("display", h ? "none" : "block"),
o("#team-menu-creating-text").css("display", h ? "block" : "none"),
o("#team-menu-connecting").css("display", d ? "none" : "block"),
o("#team-menu-contents").css("display", d ? "block" : "none")),
d) {
for (var _ = Object.keys(m), w = 0; w < _.length; w++) {
var T = _[w]
, k = m[T]
, S = o("#team-server-opts").children('option[value="' + T + '"]');
S.html(S.attr("data-label") + " [" + k + "]")
}
a.find("option").each(function() {
this.selected = this.value == g.region
}),
o(".btn-team-queue").removeClass("btn-hollow-selected");
(2 == g.teamMode ? r : s).addClass("btn-hollow-selected"),
o(".btn-team-fill").removeClass("btn-hollow-selected");
if ((g.autoFill ? l : u).addClass("btn-hollow-selected"),
g.roomUrl && (o("#team-url").html(window.location.origin + "/" + g.roomUrl),
window.history && window.history.replaceState("", "", g.roomUrl)),
e.html(g.findingGame || p ? '<div class="ui-spinner"></div>' : e.attr("data-label")),
v ? (i.addClass("btn-darken"),
i.removeClass("btn-disabled"),
i.removeClass("btn-opaque")) : (i.addClass("btn-disabled"),
o(".team-menu-options-buttons .btn-hollow-selected").removeClass("btn-opaque"),
o('.team-menu-options-buttons a:not(".btn-hollow-selected")').addClass("btn-opaque"),
i.removeClass("btn-darken")),
i.prop("disabled", !v),
a.prop("disabled", !v),
o("#btn-start-team").css("display", v ? "block" : "none"),
o("#msg-start-waiting").css("display", v ? "none" : "block"),
o("#msg-start-waiting").html(g.findingGame || p ? '<div class="ui-spinner" style="margin-right:16px"></div>Joining game <span>...</span>' : o("#msg-start-waiting").attr("data-label") + "<span> ...</span>"),
v) {
var M = f.length <= 2;
M || (r.addClass("btn-disabled btn-opaque"),
r.removeClass("btn-darken btn-hollow-selected")),
r.prop("disabled", !M)
}
var P = o("#team-menu-member-list");
P.empty();
for (var E = 0; E < f.length; E++) {
var C = f[E]
, O = o("<div/>", {
class: "team-menu-member"
})
, I = "";
C.isLeader && (I = " team-menu-member-leader");
var A = "team-menu-member-name-text";
E === y && (A += " team-menu-member-name-self"),
O.append(o("<div/>", {
class: "team-menu-member-icon" + I
})),
O.append(o("<div/>", {
class: "team-menu-member-name menu-option"
}).append(o("<div/>", {
class: A,
html: C.name
}))),
P.append(O)
}
}
}
}]),
e
}();
e.exports = d
},
"b/6L": function(e, t, i) {
"use strict";
var a = {
debug: !1,
dev: !1
};
e.exports = a
},
bkPR: function(e, t, i) {
"use strict";
function a(e, t, i, a, n) {
var l = r.items[e]
, u = o.rotate(a, t)
, c = o.mul(u, 9.5);
c = o.rotate(c, (Math.random() - .5) * Math.PI / 3);
var d = o.add(i, o.mul(a, r.player.radius + .5 * l.lengthMult));
n.addParticle(s.Defs[l.ammo], d, c, l.particle.shellScale, Math.atan2(-u.y, u.x))
}
function n(e, t, i) {
this.audioManager = t,
this.uiManager = i,
this.particleBarn = e,
this.shots = []
}
var r = (i("gKxX"),
i("+0OL"))
, o = (i("0od3"),
i("/2+T"))
, s = i("EZ6M");
n.prototype = {
free: function() {},
addShot: function(e, t, i) {
for (var a = null, n = 0; n < this.shots.length; n++)
if (this.shots[n].finished) {
this.shots[n] = e,
a = this.shots[n];
break
}
a || (a = e,
this.shots.push(a));
var o = r.items[a.weapon];
if (a.finished = !1,
a.delay = o.pullDelay ? .45 * o.pullDelay : 0,
this.audioManager.playSound(o.sound.shoot, {
channel: t.__id == i.__id ? "activePlayer" : "otherPlayers",
soundPos: t.pos
}),
t.__id == i.__id && "single" == o.fireMode && "single" == o.reloadMode) {
var s = i.localData.weapons[i.localData.curWeapIdx].ammo
, l = s > 0 ? o.sound.cycle : o.sound.pull;
this.audioManager.localActionSoundInstance = this.audioManager.playSound(l)
}
var u = e.offhand || !o.isDual
, c = !e.offhand || !o.isDual;
t.addRecoil(o.worldImg.recoil, u, c)
},
update: function(e, t) {
for (var i = 0; i < this.shots.length; i++) {
var n = this.shots[i];
if (!n.finished && (n.delay -= e,
n.delay <= 0)) {
n.finished = !0;
var o = t.getPlayerById(n.playerId);
if (!o || o.netData.dead)
continue;
if (o.netData.curWeapType != n.weapon)
continue;
"shoot" == r.items[n.weapon].caseTiming && a(n.weapon, Math.PI / 2 * -1, o.pos, o.dir, this.particleBarn)
}
}
}
},
e.exports = {
createCasingParticle: a,
ShotBarn: n
}
},
ckCa: function(e, t, i) {
"use strict";
function a() {
var e = {
fontFamily: "Arial",
fontWeight: "bold",
fontSize: 24,
align: "center",
fill: 16777215,
stroke: 0,
strokeThickness: 0,
dropShadow: !0,
dropShadowColor: "#000000",
dropShadowBlur: 1,
dropShadowAngle: Math.PI / 3,
dropShadowDistance: 1
}
, t = new o.Text("",e);
return t.anchor = new o.Point(.5,.5),
t.scale = new o.Point(.5,.5),
t
}
function n(e) {
this.active = !1,
this.pos = l.create(0, 0),
this.container = new o.Container,
e.display.addChild(this.container),
this.sprite = o.Sprite.fromImage("img/gui/skull.svg"),
this.sprite.anchor = new o.Point(.5,.5),
this.sprite.scale = new o.Point(.4,.4),
this.sprite.tint = 5921370,
this.container.addChild(this.sprite),
this.nameText = a(),
this.nameText.anchor = new o.Point(.5,-1),
this.nameText.tint = s.rgb2hex(s.hsv2rgb(0, 0, .5)),
this.container.addChild(this.nameText),
this.container.visible = !1
}
function r(e) {
this.display = new o.Container,
this.deadBodyPool = new u.Pool(n,this)
}
var o = (i("DlZn"),
i("gKxX"))
, s = (i("+0OL"),
i("0od3"),
i("Tf6H"))
, l = i("/2+T")
, u = i("dT1u");
n.prototype = {
init: function() {},
free: function() {
this.container.visible = !1
},
updateData: function(e, t, i) {
this.pos = l.copy(e.pos),
t && (this.playerId = e.playerId),
i && (this.nameTextSet = !1,
this.container.visible = !0)
}
},
r.prototype = {
update: function(e, t, i) {
for (var a = this.deadBodyPool.getPool(), n = 0; n < a.length; n++) {
var r = a[n];
if (r.active) {
r.nameTextSet || (r.nameTextSet = !0,
r.nameText.text = s.unEntity(t.getPlayerInfo(r.playerId).name));
var o = i.pointToScreen(r.pos)
, l = i.pixels(1);
r.container.x = o.x,
r.container.y = o.y,
r.container.scale.x = l,
r.container.scale.y = l
}
}
},
getDeadBodyById: function(e) {
for (var t = this.deadBodyPool.getPool(), i = 0; i < t.length; i++) {
var a = t[i];
if (a.active && a.playerId == e)
return a
}
return null
}
},
e.exports = {
DeadBodyBarn: r
}
},
dT1u: function(e, t, i) {
"use strict";
function a(e, t) {
r(void 0 !== e),
this.creator = {
type: e
},
this.ctorCtx = t,
this.pool = [],
this.activeCount = 0
}
function n(e) {
this.idToObj = {},
this.types = {},
this.seenCount = 0
}
var r = i("DlZn")
, o = i("85i3");
a.prototype = {
alloc: function() {
for (var e = null, t = 0; t < this.pool.length; t++)
if (!this.pool[t].active) {
e = this.pool[t];
break
}
return e || (e = new this.creator.type(this.ctorCtx),
this.pool.push(e)),
e.active = !0,
e.init(),
this.activeCount++,
e
},
free: function(e) {
if (e.free(),
e.active = !1,
this.activeCount--,
this.pool.length > 128 && this.activeCount < this.pool.length / 2) {
for (var t = [], i = 0; i < this.pool.length; i++)
this.pool[i].active && t.push(this.pool[i]);
this.pool = t
}
},
getPool: function() {
return this.pool
}
},
n.prototype = {
registerType: function(e, t) {
this.types[e] = t
},
getObjById: function(e) {
return this.idToObj[e]
},
getTypeById: function(e, t, i, a, n, r, s) {
var l = this.getObjById(e);
if (!l) {
var u = {
id: e,
seenCount: this.seenCount,
ids: Object.keys(this.idToObj),
packet: t,
ext: i,
delCount: a,
fullCount: n,
partCount: r,
stream: s._view._view
};
o.logError("getTypeById" + JSON.stringify(u)),
o.storeGeneric("objectPoolErr", "getTypeById")
}
return l.__type
},
updateObjFull: function(e, t, i) {
var a = this.getObjById(t)
, n = !1;
void 0 === a && (a = this.types[e].alloc(),
a.__id = t,
a.__type = e,
this.idToObj[t] = a,
this.seenCount++,
n = !0),
a.updateData(i, !0, n)
},
updateObjPart: function(e, t) {
var i = this.getObjById(e);
i ? i.updateData(t, !1, !1) : (console.log("updateObjPart, missing object", e),
o.storeGeneric("objectPoolErr", "updateObjPart"))
},
deleteObj: function(e) {
var t = this.getObjById(e);
void 0 === t ? (console.log("deleteObj, missing object", e),
o.storeGeneric("objectPoolErr", "deleteObj")) : (this.types[t.__type].free(t),
delete this.idToObj[e])
}
},
e.exports = {
Pool: a,
Creator: n
}
},
"eqS/": function(e, t, i) {
"use strict";
var a = {
"@metadata": {
"last-updated": "2018-03-02",
locale: "tr"
},
"word-order": "sov",
"index-slogan": "2d Battle Royale",
"index-region": "Bölge",
"index-north-america": "Kuzey Amerika",
"index-europe": "Avrupa",
"index-asia": "Asya",
"index-players": "oyuncular",
"index-play-solo": "Tekli oyna",
"index-play-duo": "İkili oyna",
"index-play-squad": "Takım oyna",
"index-create-team": "Takım Oluştur",
"index-leave-team": "Takımdan Çık",
"index-joining-team": "Takıma Katılınıyor",
"index-creating-team": "Takım Oluşturuluyor",
"index-invite-link": "Davet linki",
"index-solo": "Tekli",
"index-duo": "İkili",
"index-squad": "Takım",
"index-auto-fill": "Otomatik Oyuncu Seç",
"index-no-fill": "Otomatik Oyuncu Seçme",
"index-waiting-for-leader": "Liderin oyunu başlatması bekleniyor",
"index-play": "Oyna",
"index-featured-youtuber": "Önerilen Youtuber",
"index-settings": "Ayarlar",
"index-high-resolution": "Yüksek Çözünürlük (görsel kaliteyi artırmak için seç)",
"index-screen-shake": "Ekran sallanması",
"index-master-volume": "Ana Ses",
"index-sfx-volume": "Ses Efekti Düzeyi",
"index-music-volume": "Müzik Sesi",
"index-team-is-full": "Takım dolu!",
"index-failed-joining-team": "Takıma katılım başarısız oldu.",
"index-failed-creating-team": "Takım oluşturma başarısız oldu.",
"index-failed-finding-game": "Oyun bulma başarısız oldu.",
"index-failed-joining-game": "Oyuna katılım başarısız oldu.",
"index-lost-connection": "Takım bağlantısı koptu.",
"index-host-closed": "Host bağlantıyı kapattı.",
"index-invalid-protocol": "Eski istemci sürümü.",
"index-view-more": "Daha Fazla Gör",
"index-back-to-main": "Ana Menüye Geri Dön",
"index-most-kills": "En Çok Öldürmeler",
"index-total-kills": "Tüm Öldürmeler",
"index-total-wins": "Tüm Galibiyetler",
"index-top-5-percent": "En Üst Yüzde 5",
"index-for": "için",
"index-kill-death-ratio": "Öldürme-Ölüm oranı",
"index-today": "Bugün",
"index-this-week": "Bu Hafta",
"index-all-time": "Tüm Zamanlar",
"index-top-100": "En İyi 100",
"index-rank": "Sıralama",
"index-player": "Oyuncu",
"index-total-games": "Tüm oyunlar",
"index-controls": "Kontroller",
"index-movement": "Hareket",
"index-movement-ctrl": "W, A, S, D",
"index-aim": "Nişan",
"index-aim-ctrl": "Fare",
"index-punch": "Yumruk",
"index-shoot": "Ateş Etme",
"index-shoot-ctrl": "Sol-Tık",
"index-change-weapons": "Silah Değiştirme",
"index-change-weapons-ctrl": "1'den 4'e veya Fare Tekerleği",
"index-stow-weapons": "Silahları Koy (Yumruk Modu)",
"index-stow-weapons-ctrl": "3 veya E",
"index-swap-weapons": "Önceki Silaha Geç",
"index-swap-weapons-ctrl": "Q",
"index-reload": "Yeniden Doldur",
"index-reload-ctrl": "R",
"index-scope-zoom": "Yakınlaştırma",
"index-scope-zoom-ctrl": "Yakınlaştırma üzerine sol tıkla",
"index-pickup": "Al",
"index-loot": "Yağmala",
"index-revive": "İyileştir",
"index-pickup-ctrl": "F",
"index-use-medical": "Tedavi Eşyası Kullan",
"index-use-medical-ctrl": "Eşya Üzerine Sol-Tık veya 7'den 0'e kadar",
"index-drop-item": "Eşyayı At",
"index-drop-item-ctrl": "Sağ-Tık",
"index-cancel-action": "Durdur",
"index-cancel-action-ctrl": "X",
"index-view-map": "Haritayı Göster",
"index-view-map-ctrl": "M veya G",
"index-toggle-minimap": "Mini Haritayı Değiştir",
"index-toggle-minimap-ctrl": "V",
"index-use-ping": "Takım Komut Tekerleğini Kullan",
"index-use-ping-ctrl": "C'ye basılı tut, sonra Sağ-Tıka basılı tut ve fareyi sürükle, sonra Sağ-Tıkı bırak",
"index-use-emote": "Emote Tekerini Kullan",
"index-use-emote-ctrl": "Sağ-Tıka basılı tut ve fareyi sürükle, sonra Sağ-Tıkı bırak",
"index-how-to-play": "Nasıl Oynanır",
"index-tips-1-desc": "surviv.io nun amacı son hayatta kalan olmaktır. Bir oyunda sadece bir kere yaşayabilirsin - yeniden doğmka yok!",
"index-tips-2": "2D PUBG",
"index-tips-2-desc": "Eğer daha önce PUBG, Fortnite veya H1Z1 gibi battle royale oyunlar oynadıysan, sen zaten yolu yarılamışsın! surviv.io'yu 2D PUBG gibi düşün.",
"index-tips-3": "Yağmala ve Öldür",
"index-tips-3-desc": "Oyuna basit bir sırt çantası dışında hiçbir öğeyle başlamayacaksın. Ganimet bulmak için haritanın etrafında dolaş: silahlar, cephane, kapsüller ve tıbbi ürünler. Diğer oyuncuları ele ve onların ganimetlerini alabilirsin!",
"index-tips-4": "Kırmızı = Kötü!",
"index-tips-4-desc": "Seni incitebilecek tek şey oyuncular değil. Ölümcül kırmızı bölge harita kenarlarından içeri ilerler eğer içene girerseniz giderek daha fazla zarar görürsünüz. Haritaya bakmayı unutma ve güvende kal.",
"game-alive": "Hayatta",
"game-reloading": "Yeniden Dolduruluyor",
"game-using": "Kullanılıyor",
"game-reviving": "İyileştiriliyor",
"game-revive-teammate": "Takım Arkadaşını İyileştir",
"game-equip": "Kuşan",
"game-cancel": "İptal et",
"game-open-door": "Kapıyı aç",
"game-close-door": "Kapıyı kapat",
"game-You": "Sen",
"game-you": "sen",
"game-themselves": "kendisini",
"game-yourself": "kendini",
"game-you-died": "Öldün",
"game-player-died": "öldü",
"game-with": "ile",
"game-knocked-out": "düştü",
"game-killed": "öldürdü",
"game-finally-killed": "sonunda öldürdü",
"game-finally-bled-out": "sonunda kan kaybederek öldü",
"game-died-outside": "güvenli bölgenin dışında öldü",
"game-the-red-zone": "Kırmızı alan",
"game-waiting-for-players": "Oyuncular bekleniyor",
"game-spectating": "İzleniyor",
"game-red-zone-advances": "Kırmızı alan -the time- içinde geliyor",
"game-red-zone-advancing": "Kırmızı alan geliyor, güvenli bölgeye git!",
"game-seconds": "saniyeler",
"game-minutes": "dakikalar",
"game-minute": "dakika",
"game-m": "dk",
"game-s": "sn",
"game-not-enough-space": "Yeterli alan yok!",
"game-item-already-owned": "Eşyaya zaten sahipsin!",
"game-item-already-equipped": "Eşya zaten kuşanılmış!",
"game-better-item-equipped": "Daha iyi eşya kuşanıldı!",
"game-play-new-game": "Yeni Oyun Oyna",
"game-spectate": "Seyret",
"game-full-screen": "Tam Ekran",
"game-sound": "Ses",
"game-quit-game": "Oyundan Çık",
"game-return-to-game": "Oyuna Geri Dön",
"game-hide-match-stats": "Oyun İstatistiklerini Gizle",
"game-view-match-stats": "Oyun İstatistiklerini Göster",
"game-previous-teammate": "Önceki Takım Arkadaşı",
"game-next-teammate": "Sonraki Takım Arkadaşı",
"game-spectate-previous": "",
"game-spectate-next": "",
"game-leave-game": "Oyundan Ayrıl",
"game-your-results": "Skorun",
"game-chicken": "Hadi yine iyisin akşama tavuk var!",
"game-won-the-game": "oyunu kazandı",
"game-team-eliminated": "Takımınız yenildi.",
"game-rank": "Sıralama",
"game-team-rank": "Takım Sırası",
"game-team-kills": "Takım Öldürmeleri",
"game-kill": "Öldürme",
"game-kills": "Öldürme",
"game-damage-dealt": "Verilen Hasar",
"game-damage-taken": "Alınan Hasar",
"game-survived": "Hayatta Kaldı",
"game-backpack00": "Torba",
"game-backpack01": "Küçük Çanta",
"game-backpack02": "Normal Çanta",
"game-backpack03": "Askeri Çanta",
"game-bandage": "Bandaj",
"game-bandage-tooltip": "15 sağlık iyileşmek için sol tıkla.",
"game-healing-tooltip": "75 sağlıktan sonra iyileştiremez.",
"game-healthkit": "İlk Yardım Seti",
"game-healthkit-tooltip": "100 sağlık iyileşmek için sol tıkla.",
"game-soda": "Soda",
"game-soda-tooltip": "25 adrenalin basmak için sol tıkla.",
"game-adrenaline-tooltip": "Adrenalin, zamanla sağlığı düzeltir.",
"game-painkiller": "Haplar",
"game-painkiller-tooltip": "50 adrenalin basmak için sol tıkla.",
"game-9mm": "9mm",
"game-9mm-tooltip": "M9, Glock, MP5, MAC-10 ve UMP9 için cephane.",
"game-12gauge": "12 kalibre",
"game-12gauge-tooltip": "M870, Saiga-12 ve MP220 için cephane.",
"game-762mm": "7.62mm",
"game-762mm-tooltip": "AK-47, M39, Mosin Nagant, OT-38 ve DP-28 için cephane.",
"game-556mm": "5.56mm",
"game-556mm-tooltip": "FAMAS, HK416, Mk 12 ve M249 için cephane.",
"game-chest01": "Seviye 1 Zırh",
"game-chest02": "Seviye 2 Zırh",
"game-chest03": "Seviye 3 Zırh",
"game-helmet01": "Seviye 1 Kask",
"game-helmet02": "Seviye 2 Kask",
"game-helmet03": "Seviye 3 Kask",
"game-1xscope": "1x Dürbün",
"game-2xscope": "2x Dürbün",
"game-4xscope": "4x Dürbün",
"game-8xscope": "8x Dürbün",
"game-15xscope": "15x Dürbün",
"game-level-1": "Svy. 1",
"game-level-2": "Svy. 2",
"game-level-3": "Svy. 3",
"game-outfitBase": "Basit Kıyafet",
"game-outfitWoodland": "Orman Savaşı",
"game-outfitRoyalFortune": "Asil Servet",
"game-outfitKeyLime": "Misket Limonu",
"game-outfitCobaltShell": "Kobalt Kabuğu",
"game-outfitCarbonFiber": "Karbonfiber",
"game-outfitDarkGloves": "Profosyonel",
"game-outfitGhillie": "Komando",
"game-outfitCamo": "Kamuflaj",
"game-outfitRed": "Atış Talimi",
"game-outfitWhite": "Buzul Yenilmezi",
"game-fists": "Yumruk",
"game-ak47": "AK-47",
"game-dp28": "DP-28",
"game-mosin": "Mosin Nagant",
"game-m39": "M39 EMR",
"game-mp5": "MP5",
"game-mac10": "MAC-10",
"game-ump9": "UMP9",
"game-m870": "M870",
"game-mp220": "MP220",
"game-saiga": "Saiga-12",
"game-m9": "M9",
"game-glock": "Glock 18C",
"game-ot38": "OT-38",
"game-famas": "FAMAS",
"game-hk416": "HK416",
"game-mk12": "Mk 12 SPR",
"game-m249": "M249",
"game-frag": "El Bombası",
"game-hud-frag": "El Bombası",
"game-smoke": "Sis Bombası",
"game-hud-smoke": "Sis Bombası",
"game-barrel_01": "Varil",
"game-silo_01": "Ambar",
"game-oven_01": "ocak"
};
e.exports = a
},
fWTV: function(e, t, i) {
"use strict";
function a() {
this.acceptedLocales = ["da", "de", "en", "es", "fr", "it", "ko", "nl", "pl", "pt", "ru", "sv", "th", "tr", "zh-cn", "zh-tw"],
this.translations = {};
for (var e = 0; e < this.acceptedLocales.length; e++) {
var t = this.acceptedLocales[e]
, a = {};
try {
a = i("+sac")("./" + t + ".js")
} catch (e) {
console.log("localization not found", t)
}
this.translations[t] = a
}
this.locale = "en"
}
var n = i("juYr");
a.prototype = {
setLocale: function(e) {
this.locale = -1 != this.acceptedLocales.indexOf(e) ? e : "en"
},
translate: function(e) {
return this.translations[this.locale][e] || this.translations.en[e] || ""
},
localizeIndex: function() {
var e = this;
n("*[data-l10n]").each(function(t, i) {
var a = n(i)
, r = a.attr("data-l10n")
, o = e.translate(r);
if (o) {
if (a.attr("label"))
return a.attr("label", o),
!0;
a.html(o),
a.attr("data-label") && a.attr("data-label", o)
}
})
}
},
e.exports = a
},
gKxX: function(e, t, i) {
(function(t) {
e.exports = t.PIXI = i("gKxXp")
}
).call(t, i("h6ac"))
},
gKxXp: function(e, t, i) {
(function(t) {
var i, i;
/*!
* pixi.js - v4.5.2
* Compiled Sun, 28 May 2017 21:13:33 UTC
*
* pixi.js is licensed under the MIT License.
* http://www.opensource.org/licenses/mit-license
*/
!function(t) {
e.exports = t()
}(function() {
var e;
return function e(t, a, n) {
function r(s, l) {
if (!a[s]) {
if (!t[s]) {
var u = "function" == typeof i && i;
if (!l && u)
return i(s, !0);
if (o)
return o(s, !0);
var c = new Error("Cannot find module '" + s + "'");
throw c.code = "MODULE_NOT_FOUND",
c
}
var d = a[s] = {
exports: {}
};
t[s][0].call(d.exports, function(e) {
var i = t[s][1][e];
return r(i || e)
}, d, d.exports, e, t, a, n)
}
return a[s].exports
}
for (var o = "function" == typeof i && i, s = 0; s < n.length; s++)
r(n[s]);
return r
}({
1: [function(e, t, i) {
"use strict";
"use restrict";
function a(e) {
var t = 32;
return e &= -e,
e && t--,
65535 & e && (t -= 16),
16711935 & e && (t -= 8),
252645135 & e && (t -= 4),
858993459 & e && (t -= 2),
1431655765 & e && (t -= 1),
t
}
i.INT_BITS = 32,
i.INT_MAX = 2147483647,
i.INT_MIN = -1 << 31,
i.sign = function(e) {
return (e > 0) - (e < 0)
}
,
i.abs = function(e) {
var t = e >> 31;
return (e ^ t) - t
}
,
i.min = function(e, t) {
return t ^ (e ^ t) & -(e < t)
}
,
i.max = function(e, t) {
return e ^ (e ^ t) & -(e < t)
}
,
i.isPow2 = function(e) {
return !(e & e - 1 || !e)
}
,
i.log2 = function(e) {
var t, i;
return t = (e > 65535) << 4,
e >>>= t,
i = (e > 255) << 3,
e >>>= i,
t |= i,
i = (e > 15) << 2,
e >>>= i,
t |= i,
i = (e > 3) << 1,
e >>>= i,
(t |= i) | e >> 1
}
,
i.log10 = function(e) {
return e >= 1e9 ? 9 : e >= 1e8 ? 8 : e >= 1e7 ? 7 : e >= 1e6 ? 6 : e >= 1e5 ? 5 : e >= 1e4 ? 4 : e >= 1e3 ? 3 : e >= 100 ? 2 : e >= 10 ? 1 : 0
}
,
i.popCount = function(e) {
return e -= e >>> 1 & 1431655765,
16843009 * ((e = (858993459 & e) + (e >>> 2 & 858993459)) + (e >>> 4) & 252645135) >>> 24
}
,
i.countTrailingZeros = a,
i.nextPow2 = function(e) {
return e += 0 === e,
--e,
e |= e >>> 1,
e |= e >>> 2,
e |= e >>> 4,
e |= e >>> 8,
(e |= e >>> 16) + 1
}
,
i.prevPow2 = function(e) {
return e |= e >>> 1,
e |= e >>> 2,
e |= e >>> 4,
e |= e >>> 8,
(e |= e >>> 16) - (e >>> 1)
}
,
i.parity = function(e) {
return e ^= e >>> 16,
e ^= e >>> 8,
e ^= e >>> 4,
27030 >>> (e &= 15) & 1
}
;
var n = new Array(256);
!function(e) {
for (var t = 0; t < 256; ++t) {
var i = t
, a = t
, n = 7;
for (i >>>= 1; i; i >>>= 1)
a <<= 1,
a |= 1 & i,
--n;
e[t] = a << n & 255
}
}(n),
i.reverse = function(e) {
return n[255 & e] << 24 | n[e >>> 8 & 255] << 16 | n[e >>> 16 & 255] << 8 | n[e >>> 24 & 255]
}
,
i.interleave2 = function(e, t) {
return e &= 65535,
e = 16711935 & (e | e << 8),
e = 252645135 & (e | e << 4),
e = 858993459 & (e | e << 2),
e = 1431655765 & (e | e << 1),
t &= 65535,
t = 16711935 & (t | t << 8),
t = 252645135 & (t | t << 4),
t = 858993459 & (t | t << 2),
t = 1431655765 & (t | t << 1),
e | t << 1
}
,
i.deinterleave2 = function(e, t) {
return e = e >>> t & 1431655765,
e = 858993459 & (e | e >>> 1),
e = 252645135 & (e | e >>> 2),
e = 16711935 & (e | e >>> 4),
(e = 65535 & (e | e >>> 16)) << 16 >> 16
}
,
i.interleave3 = function(e, t, i) {
return e &= 1023,
e = 4278190335 & (e | e << 16),
e = 251719695 & (e | e << 8),
e = 3272356035 & (e | e << 4),
e = 1227133513 & (e | e << 2),
t &= 1023,
t = 4278190335 & (t | t << 16),
t = 251719695 & (t | t << 8),
t = 3272356035 & (t | t << 4),
t = 1227133513 & (t | t << 2),
e |= t << 1,
i &= 1023,
i = 4278190335 & (i | i << 16),
i = 251719695 & (i | i << 8),
i = 3272356035 & (i | i << 4),
i = 1227133513 & (i | i << 2),
e | i << 2
}
,
i.deinterleave3 = function(e, t) {
return e = e >>> t & 1227133513,
e = 3272356035 & (e | e >>> 2),
e = 251719695 & (e | e >>> 4),
e = 4278190335 & (e | e >>> 8),
(e = 1023 & (e | e >>> 16)) << 22 >> 22
}
,
i.nextCombination = function(e) {
var t = e | e - 1;
return t + 1 | (~t & -~t) - 1 >>> a(e) + 1
}
}
, {}],
2: [function(e, t, i) {
"use strict";
function a(e, t, i) {
i = i || 2;
var a = t && t.length
, r = a ? t[0] * i : e.length
, s = n(e, 0, r, i, !0)
, l = [];
if (!s)
return l;
var u, c, h, p, m, g, f;
if (a && (s = d(e, t, s, i)),
e.length > 80 * i) {
u = h = e[0],
c = p = e[1];
for (var y = i; y < r; y += i)
m = e[y],
g = e[y + 1],
m < u && (u = m),
g < c && (c = g),
m > h && (h = m),
g > p && (p = g);
f = Math.max(h - u, p - c)
}
return o(s, l, i, u, c, f),
l
}
function n(e, t, i, a, n) {
var r, o;
if (n === I(e, t, i, a) > 0)
for (r = t; r < i; r += a)
o = E(r, e[r], e[r + 1], o);
else
for (r = i - a; r >= t; r -= a)
o = E(r, e[r], e[r + 1], o);
return o && w(o, o.next) && (C(o),
o = o.next),
o
}
function r(e, t) {
if (!e)
return e;
t || (t = e);
var i, a = e;
do {
if (i = !1,
a.steiner || !w(a, a.next) && 0 !== _(a.prev, a, a.next))
a = a.next;
else {
if (C(a),
(a = t = a.prev) === a.next)
return null;
i = !0
}
} while (i || a !== t);return t
}
function o(e, t, i, a, n, d, h) {
if (e) {
!h && d && g(e, a, n, d);
for (var p, m, f = e; e.prev !== e.next; )
if (p = e.prev,
m = e.next,
d ? l(e, a, n, d) : s(e))
t.push(p.i / i),
t.push(e.i / i),
t.push(m.i / i),
C(e),
e = m.next,
f = m.next;
else if ((e = m) === f) {
h ? 1 === h ? (e = u(e, t, i),
o(e, t, i, a, n, d, 2)) : 2 === h && c(e, t, i, a, n, d) : o(r(e), t, i, a, n, d, 1);
break
}
}
}
function s(e) {
var t = e.prev
, i = e
, a = e.next;
if (_(t, i, a) >= 0)
return !1;
for (var n = e.next.next; n !== e.prev; ) {
if (b(t.x, t.y, i.x, i.y, a.x, a.y, n.x, n.y) && _(n.prev, n, n.next) >= 0)
return !1;
n = n.next
}
return !0
}
function l(e, t, i, a) {
var n = e.prev
, r = e
, o = e.next;
if (_(n, r, o) >= 0)
return !1;
for (var s = n.x < r.x ? n.x < o.x ? n.x : o.x : r.x < o.x ? r.x : o.x, l = n.y < r.y ? n.y < o.y ? n.y : o.y : r.y < o.y ? r.y : o.y, u = n.x > r.x ? n.x > o.x ? n.x : o.x : r.x > o.x ? r.x : o.x, c = n.y > r.y ? n.y > o.y ? n.y : o.y : r.y > o.y ? r.y : o.y, d = y(s, l, t, i, a), h = y(u, c, t, i, a), p = e.nextZ; p && p.z <= h; ) {
if (p !== e.prev && p !== e.next && b(n.x, n.y, r.x, r.y, o.x, o.y, p.x, p.y) && _(p.prev, p, p.next) >= 0)
return !1;
p = p.nextZ
}
for (p = e.prevZ; p && p.z >= d; ) {
if (p !== e.prev && p !== e.next && b(n.x, n.y, r.x, r.y, o.x, o.y, p.x, p.y) && _(p.prev, p, p.next) >= 0)
return !1;
p = p.prevZ
}
return !0
}
function u(e, t, i) {
var a = e;
do {
var n = a.prev
, r = a.next.next;
!w(n, r) && T(n, a, a.next, r) && S(n, r) && S(r, n) && (t.push(n.i / i),
t.push(a.i / i),
t.push(r.i / i),
C(a),
C(a.next),
a = e = r),
a = a.next
} while (a !== e);return a
}
function c(e, t, i, a, n, s) {
var l = e;
do {
for (var u = l.next.next; u !== l.prev; ) {
if (l.i !== u.i && x(l, u)) {
var c = P(l, u);
return l = r(l, l.next),
c = r(c, c.next),
o(l, t, i, a, n, s),
void o(c, t, i, a, n, s)
}
u = u.next
}
l = l.next
} while (l !== e)
}
function d(e, t, i, a) {
var o, s, l, u, c, d = [];
for (o = 0,
s = t.length; o < s; o++)
l = t[o] * a,
u = o < s - 1 ? t[o + 1] * a : e.length,
c = n(e, l, u, a, !1),
c === c.next && (c.steiner = !0),
d.push(v(c));
for (d.sort(h),
o = 0; o < d.length; o++)
p(d[o], i),
i = r(i, i.next);
return i
}
function h(e, t) {
return e.x - t.x
}
function p(e, t) {
if (t = m(e, t)) {
var i = P(t, e);
r(i, i.next)
}
}
function m(e, t) {
var i, a = t, n = e.x, r = e.y, o = -1 / 0;
do {
if (r <= a.y && r >= a.next.y) {
var s = a.x + (r - a.y) * (a.next.x - a.x) / (a.next.y - a.y);
if (s <= n && s > o) {
if (o = s,
s === n) {
if (r === a.y)
return a;
if (r === a.next.y)
return a.next
}
i = a.x < a.next.x ? a : a.next
}
}
a = a.next
} while (a !== t);if (!i)
return null;
if (n === o)
return i.prev;
var l, u = i, c = i.x, d = i.y, h = 1 / 0;
for (a = i.next; a !== u; )
n >= a.x && a.x >= c && b(r < d ? n : o, r, c, d, r < d ? o : n, r, a.x, a.y) && ((l = Math.abs(r - a.y) / (n - a.x)) < h || l === h && a.x > i.x) && S(a, e) && (i = a,
h = l),
a = a.next;
return i
}
function g(e, t, i, a) {
var n = e;
do {
null === n.z && (n.z = y(n.x, n.y, t, i, a)),
n.prevZ = n.prev,
n.nextZ = n.next,
n = n.next
} while (n !== e);n.prevZ.nextZ = null,
n.prevZ = null,
f(n)
}
function f(e) {
var t, i, a, n, r, o, s, l, u = 1;
do {
for (i = e,
e = null,
r = null,
o = 0; i; ) {
for (o++,
a = i,
s = 0,
t = 0; t < u && (s++,
a = a.nextZ); t++)
;
for (l = u; s > 0 || l > 0 && a; )
0 === s ? (n = a,
a = a.nextZ,
l--) : 0 !== l && a ? i.z <= a.z ? (n = i,
i = i.nextZ,
s--) : (n = a,
a = a.nextZ,
l--) : (n = i,
i = i.nextZ,
s--),
r ? r.nextZ = n : e = n,
n.prevZ = r,
r = n;
i = a
}
r.nextZ = null,
u *= 2
} while (o > 1);return e
}
function y(e, t, i, a, n) {
return e = 32767 * (e - i) / n,
t = 32767 * (t - a) / n,
e = 16711935 & (e | e << 8),
e = 252645135 & (e | e << 4),
e = 858993459 & (e | e << 2),
e = 1431655765 & (e | e << 1),
t = 16711935 & (t | t << 8),
t = 252645135 & (t | t << 4),
t = 858993459 & (t | t << 2),
t = 1431655765 & (t | t << 1),
e | t << 1
}
function v(e) {
var t = e
, i = e;
do {
t.x < i.x && (i = t),
t = t.next
} while (t !== e);return i
}
function b(e, t, i, a, n, r, o, s) {
return (n - o) * (t - s) - (e - o) * (r - s) >= 0 && (e - o) * (a - s) - (i - o) * (t - s) >= 0 && (i - o) * (r - s) - (n - o) * (a - s) >= 0
}
function x(e, t) {
return e.next.i !== t.i && e.prev.i !== t.i && !k(e, t) && S(e, t) && S(t, e) && M(e, t)
}
function _(e, t, i) {
return (t.y - e.y) * (i.x - t.x) - (t.x - e.x) * (i.y - t.y)
}
function w(e, t) {
return e.x === t.x && e.y === t.y
}
function T(e, t, i, a) {
return !!(w(e, t) && w(i, a) || w(e, a) && w(i, t)) || _(e, t, i) > 0 != _(e, t, a) > 0 && _(i, a, e) > 0 != _(i, a, t) > 0
}
function k(e, t) {
var i = e;
do {
if (i.i !== e.i && i.next.i !== e.i && i.i !== t.i && i.next.i !== t.i && T(i, i.next, e, t))
return !0;
i = i.next
} while (i !== e);return !1
}
function S(e, t) {
return _(e.prev, e, e.next) < 0 ? _(e, t, e.next) >= 0 && _(e, e.prev, t) >= 0 : _(e, t, e.prev) < 0 || _(e, e.next, t) < 0
}
function M(e, t) {
var i = e
, a = !1
, n = (e.x + t.x) / 2
, r = (e.y + t.y) / 2;
do {
i.y > r != i.next.y > r && n < (i.next.x - i.x) * (r - i.y) / (i.next.y - i.y) + i.x && (a = !a),
i = i.next
} while (i !== e);return a
}
function P(e, t) {
var i = new O(e.i,e.x,e.y)
, a = new O(t.i,t.x,t.y)
, n = e.next
, r = t.prev;
return e.next = t,
t.prev = e,
i.next = n,
n.prev = i,
a.next = i,
i.prev = a,
r.next = a,
a.prev = r,
a
}
function E(e, t, i, a) {
var n = new O(e,t,i);
return a ? (n.next = a.next,
n.prev = a,
a.next.prev = n,
a.next = n) : (n.prev = n,
n.next = n),
n
}
function C(e) {
e.next.prev = e.prev,
e.prev.next = e.next,
e.prevZ && (e.prevZ.nextZ = e.nextZ),
e.nextZ && (e.nextZ.prevZ = e.prevZ)
}
function O(e, t, i) {
this.i = e,
this.x = t,
this.y = i,
this.prev = null,
this.next = null,
this.z = null,
this.prevZ = null,
this.nextZ = null,
this.steiner = !1
}
function I(e, t, i, a) {
for (var n = 0, r = t, o = i - a; r < i; r += a)
n += (e[o] - e[r]) * (e[r + 1] + e[o + 1]),
o = r;
return n
}
t.exports = a,
a.deviation = function(e, t, i, a) {
var n = t && t.length
, r = n ? t[0] * i : e.length
, o = Math.abs(I(e, 0, r, i));
if (n)
for (var s = 0, l = t.length; s < l; s++) {
var u = t[s] * i
, c = s < l - 1 ? t[s + 1] * i : e.length;
o -= Math.abs(I(e, u, c, i))
}
var d = 0;
for (s = 0; s < a.length; s += 3) {
var h = a[s] * i
, p = a[s + 1] * i
, m = a[s + 2] * i;
d += Math.abs((e[h] - e[m]) * (e[p + 1] - e[h + 1]) - (e[h] - e[p]) * (e[m + 1] - e[h + 1]))
}
return 0 === o && 0 === d ? 0 : Math.abs((d - o) / o)
}
,
a.flatten = function(e) {
for (var t = e[0][0].length, i = {
vertices: [],
holes: [],
dimensions: t
}, a = 0, n = 0; n < e.length; n++) {
for (var r = 0; r < e[n].length; r++)
for (var o = 0; o < t; o++)
i.vertices.push(e[n][r][o]);
n > 0 && (a += e[n - 1].length,
i.holes.push(a))
}
return i
}
}
, {}],
3: [function(e, t, i) {
"use strict";
function a() {}
function n(e, t, i) {
this.fn = e,
this.context = t,
this.once = i || !1
}
function r() {
this._events = new a,
this._eventsCount = 0
}
var o = Object.prototype.hasOwnProperty
, s = "~";
Object.create && (a.prototype = Object.create(null),
(new a).__proto__ || (s = !1)),
r.prototype.eventNames = function() {
var e, t, i = [];
if (0 === this._eventsCount)
return i;
for (t in e = this._events)
o.call(e, t) && i.push(s ? t.slice(1) : t);
return Object.getOwnPropertySymbols ? i.concat(Object.getOwnPropertySymbols(e)) : i
}
,
r.prototype.listeners = function(e, t) {
var i = s ? s + e : e
, a = this._events[i];
if (t)
return !!a;
if (!a)
return [];
if (a.fn)
return [a.fn];
for (var n = 0, r = a.length, o = new Array(r); n < r; n++)
o[n] = a[n].fn;
return o
}
,
r.prototype.emit = function(e, t, i, a, n, r) {
var o = s ? s + e : e;
if (!this._events[o])
return !1;
var l, u, c = this._events[o], d = arguments.length;
if (c.fn) {
switch (c.once && this.removeListener(e, c.fn, void 0, !0),
d) {
case 1:
return c.fn.call(c.context),
!0;
case 2:
return c.fn.call(c.context, t),
!0;
case 3:
return c.fn.call(c.context, t, i),
!0;
case 4:
return c.fn.call(c.context, t, i, a),
!0;
case 5:
return c.fn.call(c.context, t, i, a, n),
!0;
case 6:
return c.fn.call(c.context, t, i, a, n, r),
!0
}
for (u = 1,
l = new Array(d - 1); u < d; u++)
l[u - 1] = arguments[u];
c.fn.apply(c.context, l)
} else {
var h, p = c.length;
for (u = 0; u < p; u++)
switch (c[u].once && this.removeListener(e, c[u].fn, void 0, !0),
d) {
case 1:
c[u].fn.call(c[u].context);
break;
case 2:
c[u].fn.call(c[u].context, t);
break;
case 3:
c[u].fn.call(c[u].context, t, i);
break;
case 4:
c[u].fn.call(c[u].context, t, i, a);
break;
default:
if (!l)
for (h = 1,
l = new Array(d - 1); h < d; h++)
l[h - 1] = arguments[h];
c[u].fn.apply(c[u].context, l)
}
}
return !0
}
,
r.prototype.on = function(e, t, i) {
var a = new n(t,i || this)
, r = s ? s + e : e;
return this._events[r] ? this._events[r].fn ? this._events[r] = [this._events[r], a] : this._events[r].push(a) : (this._events[r] = a,
this._eventsCount++),
this
}
,
r.prototype.once = function(e, t, i) {
var a = new n(t,i || this,!0)
, r = s ? s + e : e;
return this._events[r] ? this._events[r].fn ? this._events[r] = [this._events[r], a] : this._events[r].push(a) : (this._events[r] = a,
this._eventsCount++),
this
}
,
r.prototype.removeListener = function(e, t, i, n) {
var r = s ? s + e : e;
if (!this._events[r])
return this;
if (!t)
return 0 == --this._eventsCount ? this._events = new a : delete this._events[r],
this;
var o = this._events[r];
if (o.fn)
o.fn !== t || n && !o.once || i && o.context !== i || (0 == --this._eventsCount ? this._events = new a : delete this._events[r]);
else {
for (var l = 0, u = [], c = o.length; l < c; l++)
(o[l].fn !== t || n && !o[l].once || i && o[l].context !== i) && u.push(o[l]);
u.length ? this._events[r] = 1 === u.length ? u[0] : u : 0 == --this._eventsCount ? this._events = new a : delete this._events[r]
}
return this
}
,
r.prototype.removeAllListeners = function(e) {
var t;
return e ? (t = s ? s + e : e,
this._events[t] && (0 == --this._eventsCount ? this._events = new a : delete this._events[t])) : (this._events = new a,
this._eventsCount = 0),
this
}
,
r.prototype.off = r.prototype.removeListener,
r.prototype.addListener = r.prototype.on,
r.prototype.setMaxListeners = function() {
return this
}
,
r.prefixed = s,
r.EventEmitter = r,
void 0 !== t && (t.exports = r)
}
, {}],
4: [function(t, i, a) {
/**
* isMobile.js v0.4.1
*
* A simple library to detect Apple phones and tablets,
* Android phones and tablets, other mobile devices (like blackberry, mini-opera and windows phone),
* and any kind of seven inch device, via user agent sniffing.
*
* @author: Kai Mallea (kmallea@gmail.com)
*
* @license: http://creativecommons.org/publicdomain/zero/1.0/
*/
!function(t) {
var a = /iPhone/i
, n = /iPod/i
, r = /iPad/i
, o = /(?=.*\bAndroid\b)(?=.*\bMobile\b)/i
, s = /Android/i
, l = /(?=.*\bAndroid\b)(?=.*\bSD4930UR\b)/i
, u = /(?=.*\bAndroid\b)(?=.*\b(?:KFOT|KFTT|KFJWI|KFJWA|KFSOWI|KFTHWI|KFTHWA|KFAPWI|KFAPWA|KFARWI|KFASWI|KFSAWI|KFSAWA)\b)/i
, c = /Windows Phone/i
, d = /(?=.*\bWindows\b)(?=.*\bARM\b)/i
, h = /BlackBerry/i
, p = /BB10/i
, m = /Opera Mini/i
, g = /(CriOS|Chrome)(?=.*\bMobile\b)/i
, f = /(?=.*\bFirefox\b)(?=.*\bMobile\b)/i
, y = new RegExp("(?:Nexus 7|BNTV250|Kindle Fire|Silk|GT-P1000)","i")
, v = function(e, t) {
return e.test(t)
}
, b = function(e) {
var t = e || navigator.userAgent
, i = t.split("[FBAN");
if (void 0 !== i[1] && (t = i[0]),
i = t.split("Twitter"),
void 0 !== i[1] && (t = i[0]),
this.apple = {
phone: v(a, t),
ipod: v(n, t),
tablet: !v(a, t) && v(r, t),
device: v(a, t) || v(n, t) || v(r, t)
},
this.amazon = {
phone: v(l, t),
tablet: !v(l, t) && v(u, t),
device: v(l, t) || v(u, t)
},
this.android = {
phone: v(l, t) || v(o, t),
tablet: !v(l, t) && !v(o, t) && (v(u, t) || v(s, t)),
device: v(l, t) || v(u, t) || v(o, t) || v(s, t)
},
this.windows = {
phone: v(c, t),
tablet: v(d, t),
device: v(c, t) || v(d, t)
},
this.other = {
blackberry: v(h, t),
blackberry10: v(p, t),
opera: v(m, t),
firefox: v(f, t),
chrome: v(g, t),
device: v(h, t) || v(p, t) || v(m, t) || v(f, t) || v(g, t)
},
this.seven_inch = v(y, t),
this.any = this.apple.device || this.android.device || this.windows.device || this.other.device || this.seven_inch,
this.phone = this.apple.phone || this.android.phone || this.windows.phone,
this.tablet = this.apple.tablet || this.android.tablet || this.windows.tablet,
"undefined" == typeof window)
return this
}
, x = function() {
var e = new b;
return e.Class = b,
e
};
void 0 !== i && i.exports && "undefined" == typeof window ? i.exports = b : void 0 !== i && i.exports && "undefined" != typeof window ? i.exports = x() : "function" == typeof e && e.amd ? e("isMobile", [], t.isMobile = x()) : t.isMobile = x()
}(this)
}
, {}],
5: [function(e, t, i) {
"use strict";
function a(e, t) {
if (!(e instanceof t))
throw new TypeError("Cannot call a class as a function")
}
function n(e, t) {
return e._head ? (e._tail._next = t,
t._prev = e._tail,
e._tail = t) : (e._head = t,
e._tail = t),
t._owner = e,
t
}
Object.defineProperty(i, "__esModule", {
value: !0
});
var r = function() {
function e(e, t) {
for (var i = 0; i < t.length; i++) {
var a = t[i];
a.enumerable = a.enumerable || !1,
a.configurable = !0,
"value"in a && (a.writable = !0),
Object.defineProperty(e, a.key, a)
}
}
return function(t, i, a) {
return i && e(t.prototype, i),
a && e(t, a),
t
}
}()
, o = function() {
function e(t, i, n) {
void 0 === i && (i = !1),
a(this, e),
this._fn = t,
this._once = i,
this._thisArg = n,
this._next = this._prev = this._owner = null
}
return r(e, [{
key: "detach",
value: function() {
return null !== this._owner && (this._owner.detach(this),
!0)
}
}]),
e
}()
, s = function() {
function e() {
a(this, e),
this._head = this._tail = void 0
}
return r(e, [{
key: "handlers",
value: function() {
var e = !(arguments.length <= 0 || void 0 === arguments[0]) && arguments[0]
, t = this._head;
if (e)
return !!t;
for (var i = []; t; )
i.push(t),
t = t._next;
return i
}
}, {
key: "has",
value: function(e) {
if (!(e instanceof o))
throw new Error("MiniSignal#has(): First arg must be a MiniSignalBinding object.");
return e._owner === this
}
}, {
key: "dispatch",
value: function() {
var e = this._head;
if (!e)
return !1;
for (; e; )
e._once && this.detach(e),
e._fn.apply(e._thisArg, arguments),
e = e._next;
return !0
}
}, {
key: "add",
value: function(e) {
var t = arguments.length <= 1 || void 0 === arguments[1] ? null : arguments[1];
if ("function" != typeof e)
throw new Error("MiniSignal#add(): First arg must be a Function.");
return n(this, new o(e,!1,t))
}
}, {
key: "once",
value: function(e) {
var t = arguments.length <= 1 || void 0 === arguments[1] ? null : arguments[1];
if ("function" != typeof e)
throw new Error("MiniSignal#once(): First arg must be a Function.");
return n(this, new o(e,!0,t))
}
}, {
key: "detach",
value: function(e) {
if (!(e instanceof o))
throw new Error("MiniSignal#detach(): First arg must be a MiniSignalBinding object.");
return e._owner !== this ? this : (e._prev && (e._prev._next = e._next),
e._next && (e._next._prev = e._prev),
e === this._head ? (this._head = e._next,
null === e._next && (this._tail = null)) : e === this._tail && (this._tail = e._prev,
this._tail._next = null),
e._owner = null,
this)
}
}, {
key: "detachAll",
value: function() {
var e = this._head;
if (!e)
return this;
for (this._head = this._tail = null; e; )
e._owner = null,
e = e._next;
return this
}
}]),
e
}();
s.MiniSignalBinding = o,
i.default = s,
t.exports = i.default
}
, {}],
6: [function(e, t, i) {
/*
object-assign
(c) Sindre Sorhus
@license MIT
*/
"use strict";
function a(e) {
if (null === e || void 0 === e)
throw new TypeError("Object.assign cannot be called with null or undefined");
return Object(e)
}
var n = Object.getOwnPropertySymbols
, r = Object.prototype.hasOwnProperty
, o = Object.prototype.propertyIsEnumerable;
t.exports = function() {
try {
if (!Object.assign)
return !1;
var e = new String("abc");
if (e[5] = "de",
"5" === Object.getOwnPropertyNames(e)[0])
return !1;
for (var t = {}, i = 0; i < 10; i++)
t["_" + String.fromCharCode(i)] = i;
if ("0123456789" !== Object.getOwnPropertyNames(t).map(function(e) {
return t[e]
}).join(""))
return !1;
var a = {};
return "abcdefghijklmnopqrst".split("").forEach(function(e) {
a[e] = e
}),
"abcdefghijklmnopqrst" === Object.keys(Object.assign({}, a)).join("")
} catch (e) {
return !1
}
}() ? Object.assign : function(e, t) {
for (var i, s, l = a(e), u = 1; u < arguments.length; u++) {
i = Object(arguments[u]);
for (var c in i)
r.call(i, c) && (l[c] = i[c]);
if (n) {
s = n(i);
for (var d = 0; d < s.length; d++)
o.call(i, s[d]) && (l[s[d]] = i[s[d]])
}
}
return l
}
}
, {}],
7: [function(e, t, i) {
"use strict";
t.exports = function(e, t) {
t = t || {};
for (var i = {
key: ["source", "protocol", "authority", "userInfo", "user", "password", "host", "port", "relative", "path", "directory", "file", "query", "anchor"],
q: {
name: "queryKey",
parser: /(?:^|&)([^&=]*)=?([^&]*)/g
},
parser: {
strict: /^(?:([^:\/?#]+):)?(?:\/\/((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?))?((((?:[^?#\/]*\/)*)([^?#]*))(?:\?([^#]*))?(?:#(.*))?)/,
loose: /^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/
}
}, a = i.parser[t.strictMode ? "strict" : "loose"].exec(e), n = {}, r = 14; r--; )
n[i.key[r]] = a[r] || "";
return n[i.q.name] = {},
n[i.key[12]].replace(i.q.parser, function(e, t, a) {
t && (n[i.q.name][t] = a)
}),
n
}
}
, {}],
8: [function(e, t, i) {
(function(e) {
function t(e, t) {
for (var i = 0, a = e.length - 1; a >= 0; a--) {
var n = e[a];
"." === n ? e.splice(a, 1) : ".." === n ? (e.splice(a, 1),
i++) : i && (e.splice(a, 1),
i--)
}
if (t)
for (; i--; i)
e.unshift("..");
return e
}
function a(e, t) {
if (e.filter)
return e.filter(t);
for (var i = [], a = 0; a < e.length; a++)
t(e[a], a, e) && i.push(e[a]);
return i
}
var n = /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/
, r = function(e) {
return n.exec(e).slice(1)
};
i.resolve = function() {
for (var i = "", n = !1, r = arguments.length - 1; r >= -1 && !n; r--) {
var o = r >= 0 ? arguments[r] : e.cwd();
if ("string" != typeof o)
throw new TypeError("Arguments to path.resolve must be strings");
o && (i = o + "/" + i,
n = "/" === o.charAt(0))
}
return i = t(a(i.split("/"), function(e) {
return !!e
}), !n).join("/"),
(n ? "/" : "") + i || "."
}
,
i.normalize = function(e) {
var n = i.isAbsolute(e)
, r = "/" === o(e, -1);
return e = t(a(e.split("/"), function(e) {
return !!e
}), !n).join("/"),
e || n || (e = "."),
e && r && (e += "/"),
(n ? "/" : "") + e
}
,
i.isAbsolute = function(e) {
return "/" === e.charAt(0)
}
,
i.join = function() {
var e = Array.prototype.slice.call(arguments, 0);
return i.normalize(a(e, function(e, t) {
if ("string" != typeof e)
throw new TypeError("Arguments to path.join must be strings");
return e
}).join("/"))
}
,
i.relative = function(e, t) {
function a(e) {
for (var t = 0; t < e.length && "" === e[t]; t++)
;
for (var i = e.length - 1; i >= 0 && "" === e[i]; i--)
;
return t > i ? [] : e.slice(t, i - t + 1)
}
e = i.resolve(e).substr(1),
t = i.resolve(t).substr(1);
for (var n = a(e.split("/")), r = a(t.split("/")), o = Math.min(n.length, r.length), s = o, l = 0; l < o; l++)
if (n[l] !== r[l]) {
s = l;
break
}
for (var u = [], l = s; l < n.length; l++)
u.push("..");
return u = u.concat(r.slice(s)),
u.join("/")
}
,
i.sep = "/",
i.delimiter = ":",
i.dirname = function(e) {
var t = r(e)
, i = t[0]
, a = t[1];
return i || a ? (a && (a = a.substr(0, a.length - 1)),
i + a) : "."
}
,
i.basename = function(e, t) {
var i = r(e)[2];
return t && i.substr(-1 * t.length) === t && (i = i.substr(0, i.length - t.length)),
i
}
,
i.extname = function(e) {
return r(e)[3]
}
;
var o = "b" === "ab".substr(-1) ? function(e, t, i) {
return e.substr(t, i)
}
: function(e, t, i) {
return t < 0 && (t = e.length + t),
e.substr(t, i)
}
}
).call(this, e("_process"))
}
, {
_process: 26
}],
9: [function(e, t, i) {
var a = new ArrayBuffer(0)
, n = function(e, t, i, n) {
this.gl = e,
this.buffer = e.createBuffer(),
this.type = t || e.ARRAY_BUFFER,
this.drawType = n || e.STATIC_DRAW,
this.data = a,
i && this.upload(i),
this._updateID = 0
};
n.prototype.upload = function(e, t, i) {
i || this.bind();
var a = this.gl;
e = e || this.data,
t = t || 0,
this.data.byteLength >= e.byteLength ? a.bufferSubData(this.type, t, e) : a.bufferData(this.type, e, this.drawType),
this.data = e
}
,
n.prototype.bind = function() {
this.gl.bindBuffer(this.type, this.buffer)
}
,
n.createVertexBuffer = function(e, t, i) {
return new n(e,e.ARRAY_BUFFER,t,i)
}
,
n.createIndexBuffer = function(e, t, i) {
return new n(e,e.ELEMENT_ARRAY_BUFFER,t,i)
}
,
n.create = function(e, t, i, a) {
return new n(e,t,i,a)
}
,
n.prototype.destroy = function() {
this.gl.deleteBuffer(this.buffer)
}
,
t.exports = n
}
, {}],
10: [function(e, t, i) {
var a = e("./GLTexture")
, n = function(e, t, i) {
this.gl = e,
this.framebuffer = e.createFramebuffer(),
this.stencil = null,
this.texture = null,
this.width = t || 100,
this.height = i || 100
};
n.prototype.enableTexture = function(e) {
var t = this.gl;
this.texture = e || new a(t),
this.texture.bind(),
this.bind(),
t.framebufferTexture2D(t.FRAMEBUFFER, t.COLOR_ATTACHMENT0, t.TEXTURE_2D, this.texture.texture, 0)
}
,
n.prototype.enableStencil = function() {
if (!this.stencil) {
var e = this.gl;
this.stencil = e.createRenderbuffer(),
e.bindRenderbuffer(e.RENDERBUFFER, this.stencil),
e.framebufferRenderbuffer(e.FRAMEBUFFER, e.DEPTH_STENCIL_ATTACHMENT, e.RENDERBUFFER, this.stencil),
e.renderbufferStorage(e.RENDERBUFFER, e.DEPTH_STENCIL, this.width, this.height)
}
}
,
n.prototype.clear = function(e, t, i, a) {
this.bind();
var n = this.gl;
n.clearColor(e, t, i, a),
n.clear(n.COLOR_BUFFER_BIT | n.DEPTH_BUFFER_BIT)
}
,
n.prototype.bind = function() {
var e = this.gl;
e.bindFramebuffer(e.FRAMEBUFFER, this.framebuffer)
}
,
n.prototype.unbind = function() {
var e = this.gl;
e.bindFramebuffer(e.FRAMEBUFFER, null)
}
,
n.prototype.resize = function(e, t) {
var i = this.gl;
this.width = e,
this.height = t,
this.texture && this.texture.uploadData(null, e, t),
this.stencil && (i.bindRenderbuffer(i.RENDERBUFFER, this.stencil),
i.renderbufferStorage(i.RENDERBUFFER, i.DEPTH_STENCIL, e, t))
}
,
n.prototype.destroy = function() {
var e = this.gl;
this.texture && this.texture.destroy(),
e.deleteFramebuffer(this.framebuffer),
this.gl = null,
this.stencil = null,
this.texture = null
}
,
n.createRGBA = function(e, t, i, r) {
var o = a.fromData(e, null, t, i);
o.enableNearestScaling(),
o.enableWrapClamp();
var s = new n(e,t,i);
return s.enableTexture(o),
s.unbind(),
s
}
,
n.createFloat32 = function(e, t, i, r) {
var o = new a.fromData(e,r,t,i);
o.enableNearestScaling(),
o.enableWrapClamp();
var s = new n(e,t,i);
return s.enableTexture(o),
s.unbind(),
s
}
,
t.exports = n
}
, {
"./GLTexture": 12
}],
11: [function(e, t, i) {
var a = e("./shader/compileProgram")
, n = e("./shader/extractAttributes")
, r = e("./shader/extractUniforms")
, o = e("./shader/setPrecision")
, s = e("./shader/generateUniformAccessObject")
, l = function(e, t, i, l, u) {
this.gl = e,
l && (t = o(t, l),
i = o(i, l)),
this.program = a(e, t, i, u),
this.attributes = n(e, this.program),
this.uniformData = r(e, this.program),
this.uniforms = s(e, this.uniformData)
};
l.prototype.bind = function() {
this.gl.useProgram(this.program)
}
,
l.prototype.destroy = function() {
this.attributes = null,
this.uniformData = null,
this.uniforms = null,
this.gl.deleteProgram(this.program)
}
,
t.exports = l
}
, {
"./shader/compileProgram": 17,
"./shader/extractAttributes": 19,
"./shader/extractUniforms": 20,
"./shader/generateUniformAccessObject": 21,
"./shader/setPrecision": 25
}],
12: [function(e, t, i) {
var a = function(e, t, i, a, n) {
this.gl = e,
this.texture = e.createTexture(),
this.mipmap = !1,
this.premultiplyAlpha = !1,
this.width = t || -1,
this.height = i || -1,
this.format = a || e.RGBA,
this.type = n || e.UNSIGNED_BYTE
};
a.prototype.upload = function(e) {
this.bind();
var t = this.gl;
t.pixelStorei(t.UNPACK_PREMULTIPLY_ALPHA_WEBGL, this.premultiplyAlpha);
var i = e.videoWidth || e.width
, a = e.videoHeight || e.height;
a !== this.height || i !== this.width ? t.texImage2D(t.TEXTURE_2D, 0, this.format, this.format, this.type, e) : t.texSubImage2D(t.TEXTURE_2D, 0, 0, 0, this.format, this.type, e),
this.width = i,
this.height = a
}
;
var n = !1;
a.prototype.uploadData = function(e, t, i) {
this.bind();
var a = this.gl;
if (e instanceof Float32Array) {
if (!n) {
if (!a.getExtension("OES_texture_float"))
throw new Error("floating point textures not available");
n = !0
}
this.type = a.FLOAT
} else
this.type = this.type || a.UNSIGNED_BYTE;
a.pixelStorei(a.UNPACK_PREMULTIPLY_ALPHA_WEBGL, this.premultiplyAlpha),
t !== this.width || i !== this.height ? a.texImage2D(a.TEXTURE_2D, 0, this.format, t, i, 0, this.format, this.type, e || null) : a.texSubImage2D(a.TEXTURE_2D, 0, 0, 0, t, i, this.format, this.type, e || null),
this.width = t,
this.height = i
}
,
a.prototype.bind = function(e) {
var t = this.gl;
void 0 !== e && t.activeTexture(t.TEXTURE0 + e),
t.bindTexture(t.TEXTURE_2D, this.texture)
}
,
a.prototype.unbind = function() {
var e = this.gl;
e.bindTexture(e.TEXTURE_2D, null)
}
,
a.prototype.minFilter = function(e) {
var t = this.gl;
this.bind(),
this.mipmap ? t.texParameteri(t.TEXTURE_2D, t.TEXTURE_MIN_FILTER, e ? t.LINEAR_MIPMAP_LINEAR : t.NEAREST_MIPMAP_NEAREST) : t.texParameteri(t.TEXTURE_2D, t.TEXTURE_MIN_FILTER, e ? t.LINEAR : t.NEAREST)
}
,
a.prototype.magFilter = function(e) {
var t = this.gl;
this.bind(),
t.texParameteri(t.TEXTURE_2D, t.TEXTURE_MAG_FILTER, e ? t.LINEAR : t.NEAREST)
}
,
a.prototype.enableMipmap = function() {
var e = this.gl;
this.bind(),
this.mipmap = !0,
e.generateMipmap(e.TEXTURE_2D)
}
,
a.prototype.enableLinearScaling = function() {
this.minFilter(!0),
this.magFilter(!0)
}
,
a.prototype.enableNearestScaling = function() {
this.minFilter(!1),
this.magFilter(!1)
}
,
a.prototype.enableWrapClamp = function() {
var e = this.gl;
this.bind(),
e.texParameteri(e.TEXTURE_2D, e.TEXTURE_WRAP_S, e.CLAMP_TO_EDGE),
e.texParameteri(e.TEXTURE_2D, e.TEXTURE_WRAP_T, e.CLAMP_TO_EDGE)
}
,
a.prototype.enableWrapRepeat = function() {
var e = this.gl;
this.bind(),
e.texParameteri(e.TEXTURE_2D, e.TEXTURE_WRAP_S, e.REPEAT),
e.texParameteri(e.TEXTURE_2D, e.TEXTURE_WRAP_T, e.REPEAT)
}
,
a.prototype.enableWrapMirrorRepeat = function() {
var e = this.gl;
this.bind(),
e.texParameteri(e.TEXTURE_2D, e.TEXTURE_WRAP_S, e.MIRRORED_REPEAT),
e.texParameteri(e.TEXTURE_2D, e.TEXTURE_WRAP_T, e.MIRRORED_REPEAT)
}
,
a.prototype.destroy = function() {
this.gl.deleteTexture(this.texture)
}
,
a.fromSource = function(e, t, i) {
var n = new a(e);
return n.premultiplyAlpha = i || !1,
n.upload(t),
n
}
,
a.fromData = function(e, t, i, n) {
var r = new a(e);
return r.uploadData(t, i, n),
r
}
,
t.exports = a
}
, {}],
13: [function(e, t, i) {
function a(e, t) {
if (this.nativeVaoExtension = null,
a.FORCE_NATIVE || (this.nativeVaoExtension = e.getExtension("OES_vertex_array_object") || e.getExtension("MOZ_OES_vertex_array_object") || e.getExtension("WEBKIT_OES_vertex_array_object")),
this.nativeState = t,
this.nativeVaoExtension) {
this.nativeVao = this.nativeVaoExtension.createVertexArrayOES();
var i = e.getParameter(e.MAX_VERTEX_ATTRIBS);
this.nativeState = {
tempAttribState: new Array(i),
attribState: new Array(i)
}
}
this.gl = e,
this.attributes = [],
this.indexBuffer = null,
this.dirty = !1
}
var n = e("./setVertexAttribArrays");
a.prototype.constructor = a,
t.exports = a,
a.FORCE_NATIVE = !1,
a.prototype.bind = function() {
return this.nativeVao ? (this.nativeVaoExtension.bindVertexArrayOES(this.nativeVao),
this.dirty && (this.dirty = !1,
this.activate())) : this.activate(),
this
}
,
a.prototype.unbind = function() {
return this.nativeVao && this.nativeVaoExtension.bindVertexArrayOES(null),
this
}
,
a.prototype.activate = function() {
for (var e = this.gl, t = null, i = 0; i < this.attributes.length; i++) {
var a = this.attributes[i];
t !== a.buffer && (a.buffer.bind(),
t = a.buffer),
e.vertexAttribPointer(a.attribute.location, a.attribute.size, a.type || e.FLOAT, a.normalized || !1, a.stride || 0, a.start || 0)
}
return n(e, this.attributes, this.nativeState),
this.indexBuffer && this.indexBuffer.bind(),
this
}
,
a.prototype.addAttribute = function(e, t, i, a, n, r) {
return this.attributes.push({
buffer: e,
attribute: t,
location: t.location,
type: i || this.gl.FLOAT,
normalized: a || !1,
stride: n || 0,
start: r || 0
}),
this.dirty = !0,
this
}
,
a.prototype.addIndex = function(e) {
return this.indexBuffer = e,
this.dirty = !0,
this
}
,
a.prototype.clear = function() {
return this.nativeVao && this.nativeVaoExtension.bindVertexArrayOES(this.nativeVao),
this.attributes.length = 0,
this.indexBuffer = null,
this
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment