Last active
April 3, 2018 21:33
-
-
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.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 = " ".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(/&/g, "&").replace(/</g, "<").replace(/>/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