diff --git a/characters/nene-christmas.json b/characters/nene-christmas.json
index b223a2a..d614cd5 100644
--- a/characters/nene-christmas.json
+++ b/characters/nene-christmas.json
@@ -22,7 +22,7 @@
"fps": 24,
"anim": "combo50",
"loop": false,
- "name": "combo celebration 1 nene xmas0"
+ "name": "combo celebration 1 nene xmas"
},
{
"offsets": [17, -5],
@@ -38,7 +38,7 @@
"fps": 24,
"anim": "combo100",
"loop": false,
- "name": "ComboFawn0"
+ "name": "ComboFawn"
},
{
"offsets": [0, 52],
@@ -46,7 +46,7 @@
"fps": 24,
"anim": "raiseKnife",
"loop": false,
- "name": "knife raise xmas0"
+ "name": "knife raise xmas"
},
{
"offsets": [-99, 52],
@@ -54,7 +54,7 @@
"fps": 24,
"anim": "idleKnife",
"loop": false,
- "name": "knife high held xmas0"
+ "name": "knife high held xmas"
},
{
"offsets": [135, 52],
@@ -62,12 +62,12 @@
"fps": 24,
"anim": "lowerKnife",
"loop": false,
- "name": "knife lower xmas0"
+ "name": "knife lower xmas"
}
],
"vocals_file": "",
"no_antialiasing": false,
- "image": "characters/mallPico/neneChristmas",
+ "image": "sprites/characters/neneChristmas",
"position": [0, 200],
"healthicon": "face",
"flip_x": false,
@@ -75,5 +75,6 @@
"camera_position": [-50, 100],
"sing_duration": 6.1,
"scale": 1,
- "_editor_isPlayer": false
+ "_editor_isPlayer": false,
+ "starter_frame": 1
}
diff --git a/characters/nene-christmas.lua b/characters/nene-christmas.lua
new file mode 100644
index 0000000..536a9a2
--- /dev/null
+++ b/characters/nene-christmas.lua
@@ -0,0 +1,119 @@
+---@type engine.module
+local module = {}
+local abot, sound, rate, channels, bg, eyes, char
+local spectrum = {}
+local visualizers = {}
+
+require("modules.luafft")
+local logging = require("modules.logging")
+
+local function divide(list, factor)
+ for i, v in ipairs(list) do
+ list[i] = list[i] / factor
+ end
+end
+
+---@param character engine.character
+function module.onAdded(character)
+ char = character
+ abot = Atlas("sprites/characters/abot/abotSystem")
+ abot:PlayAnimation("")
+ abot.layer = character.sprite.layer - .1
+ abot.position = character.sprite.position:Add(Vector2(100, 200))
+
+ for i = 1, 7 do
+ local viz = Rect("sprites/characters/abot/aBotViz.png", "sprites/characters/abot/aBotViz.xml")
+ if i > 1 then
+ viz.position = abot.position:Add(Vector2(i * 80 + 55, 60))
+ else
+ -- don't question my code choices, i really tried.
+ -- The bugs didn't even make sense atp so yeah.
+ -- - entar
+ viz.position = abot.position:Add(Vector2(100000000, 10000000))
+ end
+ viz.layer = abot.layer - 0.1
+ viz:Frame(string.format("viz%s", i), 5)
+ visualizers[i] = viz
+ end
+
+ bg = Image("sprites/characters/abot/stereoBG.png")
+ bg.layer = abot.layer - 0.2
+ bg.position = abot.position:Add(Vector2(153, 43))
+
+ eyes = Atlas("sprites/characters/abot/systemEyes")
+ eyes.layer = abot.layer - 0.1
+ eyes.position = abot.position:Add(Vector2(45, 250))
+ eyes:PlayAnimation("a bot eyes lookin")
+end
+
+function module.onCreate(song)
+ local audiopath = string.format("songs/%s/Inst.ogg", song)
+ print(audiopath)
+ sound = love.sound.newSoundData(audiopath)
+ rate = sound:getSampleRate()
+ channels = sound:getChannels()
+end
+
+function module.onBeat(beat)
+ -- if beat % 2 == 0 then
+ abot:PlayAnimation()
+ -- end
+end
+
+function module.onUpdate(dt, el)
+ abot.layer = char.sprite.layer - .1
+ bg.layer = abot.layer - 0.2
+ eyes.layer = bg.layer
+
+ abot.position = char.sprite.position:Add(Vector2(-100, 300)):Add(char.stagePosition)
+
+ bg.position = abot.position:Add(Vector2(153, 43))
+ eyes.position = abot.position:Add(Vector2(45, 250))
+
+ pcall(function ()
+ local curSample = inst:tell('samples')
+
+ local wave = {}
+ local size = next_possible_size(2048)
+ if channels == 2 then
+ for i = curSample, (curSample + (size - 1) / 2) do
+ local sample = (sound:getSample(i * 2) + sound:getSample(i * 2 + 1)) * 0.5
+ table.insert(wave, complex.new(sample, 0))
+ end
+ else
+ for i = curSample, curSample + (size - 1) do
+ local sample = (sound:getSample(i * 2) + sound:getSample(i * 2 + 1)) * 0.5
+ table.insert(wave, complex.new(sample, 0))
+ table.insert(wave, complex.new(sound:getSample(i), 0))
+ end
+ end
+
+ local spec = fft(wave, false)
+
+ divide(spec, size / 2)
+
+ spectrum = spec
+ local division = 142.857142857
+
+ for i=2, (#spectrum/division) do
+ local n = spectrum[i]:abs()
+
+ visualizers[i]:Frame(string.format("viz%s", i), math.floor(n / 0.06) > 5 and 0 or 5 - math.floor(n / 0.06))
+ visualizers[i].layer = abot.layer - 0.1
+ visualizers[i].position = abot.position:Add(Vector2(i * 80 + 55, 60))
+ end
+ end)
+end
+
+function module.onClose()
+
+end
+
+function module.onEvent(event)
+ if event.name == "FocusCamera" then
+ local str = event.vars.char == 1 and "a bot eyes lookin" or "a bot eyes lookin"
+ eyes:PlayAnimation(str)
+ end
+end
+
+return module
diff --git a/characters/nene.json b/characters/nene.json
index 562eebc..aadff03 100644
--- a/characters/nene.json
+++ b/characters/nene.json
@@ -97,12 +97,16 @@
"vocals_file": "",
"no_antialiasing": false,
"image": "sprites/characters/Nene",
- "position": [0, 200],
+ "position": [-200, 400],
"healthicon": "face",
"flip_x": false,
"healthbar_colors": [161, 161, 161],
"camera_position": [-150, 100],
"sing_duration": 6.1,
"scale": 1,
- "_editor_isPlayer": false
+ "_editor_isPlayer": false,
+ "starter_frame": 1,
+ "stage_positions": {
+ "tank": [500, -330]
+ }
}
\ No newline at end of file
diff --git a/characters/nene.lua b/characters/nene.lua
index a2ac0c5..536a9a2 100644
--- a/characters/nene.lua
+++ b/characters/nene.lua
@@ -1,10 +1,11 @@
---@type engine.module
local module = {}
-local abot, sound, rate, channels
+local abot, sound, rate, channels, bg, eyes, char
local spectrum = {}
local visualizers = {}
require("modules.luafft")
+local logging = require("modules.logging")
local function divide(list, factor)
for i, v in ipairs(list) do
@@ -14,19 +15,35 @@ end
---@param character engine.character
function module.onAdded(character)
- print(character.stagePosition:Add(character.sprite.position))
+ char = character
abot = Atlas("sprites/characters/abot/abotSystem")
abot:PlayAnimation("")
- abot.layer = character.sprite.layer - 0.1
+ abot.layer = character.sprite.layer - .1
+ abot.position = character.sprite.position:Add(Vector2(100, 200))
for i = 1, 7 do
- print(i)
local viz = Rect("sprites/characters/abot/aBotViz.png", "sprites/characters/abot/aBotViz.xml")
- viz.position = abot.position:Add(Vector2(i * 50 + 20, 50))
- viz.layer = 500
+ if i > 1 then
+ viz.position = abot.position:Add(Vector2(i * 80 + 55, 60))
+ else
+ -- don't question my code choices, i really tried.
+ -- The bugs didn't even make sense atp so yeah.
+ -- - entar
+ viz.position = abot.position:Add(Vector2(100000000, 10000000))
+ end
+ viz.layer = abot.layer - 0.1
viz:Frame(string.format("viz%s", i), 5)
visualizers[i] = viz
end
+
+ bg = Image("sprites/characters/abot/stereoBG.png")
+ bg.layer = abot.layer - 0.2
+ bg.position = abot.position:Add(Vector2(153, 43))
+
+ eyes = Atlas("sprites/characters/abot/systemEyes")
+ eyes.layer = abot.layer - 0.1
+ eyes.position = abot.position:Add(Vector2(45, 250))
+ eyes:PlayAnimation("a bot eyes lookin")
end
function module.onCreate(song)
@@ -44,44 +61,59 @@ function module.onBeat(beat)
end
function module.onUpdate(dt, el)
- local curSample = inst:tell('samples')
+ abot.layer = char.sprite.layer - .1
+ bg.layer = abot.layer - 0.2
+ eyes.layer = bg.layer
- local wave = {}
- local size = next_possible_size(2048)
- if channels == 2 then
- for i = curSample, (curSample + (size - 1) / 2) do
- local sample = (sound:getSample(i * 2) + sound:getSample(i * 2 + 1)) * 0.5
- table.insert(wave, complex.new(sample, 0))
+ abot.position = char.sprite.position:Add(Vector2(-100, 300)):Add(char.stagePosition)
+
+ bg.position = abot.position:Add(Vector2(153, 43))
+ eyes.position = abot.position:Add(Vector2(45, 250))
+
+ pcall(function ()
+ local curSample = inst:tell('samples')
+
+ local wave = {}
+ local size = next_possible_size(2048)
+ if channels == 2 then
+ for i = curSample, (curSample + (size - 1) / 2) do
+ local sample = (sound:getSample(i * 2) + sound:getSample(i * 2 + 1)) * 0.5
+ table.insert(wave, complex.new(sample, 0))
+ end
+ else
+ for i = curSample, curSample + (size - 1) do
+ local sample = (sound:getSample(i * 2) + sound:getSample(i * 2 + 1)) * 0.5
+ table.insert(wave, complex.new(sample, 0))
+ table.insert(wave, complex.new(sound:getSample(i), 0))
+ end
end
- else
- for i = curSample, curSample + (size - 1) do
- local sample = (sound:getSample(i * 2) + sound:getSample(i * 2 + 1)) * 0.5
- table.insert(wave, complex.new(sample, 0))
- table.insert(wave, complex.new(sound:getSample(i), 0))
+
+ local spec = fft(wave, false)
+
+ divide(spec, size / 2)
+
+ spectrum = spec
+ local division = 142.857142857
+
+ for i=2, (#spectrum/division) do
+ local n = spectrum[i]:abs()
+
+ visualizers[i]:Frame(string.format("viz%s", i), math.floor(n / 0.06) > 5 and 0 or 5 - math.floor(n / 0.06))
+ visualizers[i].layer = abot.layer - 0.1
+ visualizers[i].position = abot.position:Add(Vector2(i * 80 + 55, 60))
end
- end
-
- local spec = fft(wave, false)
- --local reconstructed = fft(spec,true)
-
- --divide(reconstructed,size)
- divide(spec, size / 2)
-
- spectrum = spec
- local division = 142.857142857
- local actuali = 1
-
- for i=1, #spectrum/division do
- local n = spectrum[i]:abs()
-
- visualizers[actuali]:Frame(string.format("viz%s", actuali), math.floor(n / 0.06) > 5 and 0 or 5 - math.floor(n / 0.06))
-
- actuali = actuali + 1
- end
+ end)
end
function module.onClose()
end
+function module.onEvent(event)
+ if event.name == "FocusCamera" then
+ local str = event.vars.char == 1 and "a bot eyes lookin" or "a bot eyes lookin"
+ eyes:PlayAnimation(str)
+ end
+end
+
return module
diff --git a/characters/pico-playable.json b/characters/pico-playable.json
index 50e3dd9..d726b8d 100644
--- a/characters/pico-playable.json
+++ b/characters/pico-playable.json
@@ -154,6 +154,17 @@
"name": "burpshit",
"indices": []
},
+ {
+ "loop": false,
+ "offsets": [
+ 20,
+ 0
+ ],
+ "anim": "burpSmile",
+ "fps": 24,
+ "name": "burpsmile",
+ "indices": []
+ },
{
"loop": false,
"offsets": [
diff --git a/charts/blammed/blammed-metadata-pico.json b/charts/blammed/blammed-metadata-pico.json
index bb750f2..0906d63 100644
--- a/charts/blammed/blammed-metadata-pico.json
+++ b/charts/blammed/blammed-metadata-pico.json
@@ -7,7 +7,7 @@
"difficulties": ["easy", "normal", "hard"],
"characters": {
"player": "pico-playable",
- "girlfriend": "gf",
+ "girlfriend": "nene",
"opponent": "pico",
"instrumental": "pico",
"altInstrumentals": []
diff --git a/charts/cocoa/cocoa-metadata-pico.json b/charts/cocoa/cocoa-metadata-pico.json
index 6512a63..7ce6d3c 100644
--- a/charts/cocoa/cocoa-metadata-pico.json
+++ b/charts/cocoa/cocoa-metadata-pico.json
@@ -7,7 +7,7 @@
"difficulties": ["easy", "normal", "hard"],
"characters": {
"player": "pico-christmas",
- "girlfriend": "gf-christmas",
+ "girlfriend": "nene-christmas",
"opponent": "parents-christmas",
"instrumental": "pico",
"opponentVocals": ["parents-christmas"],
diff --git a/charts/fresh/fresh-metadata-pico.json b/charts/fresh/fresh-metadata-pico.json
index 7c43d04..aec9eab 100644
--- a/charts/fresh/fresh-metadata-pico.json
+++ b/charts/fresh/fresh-metadata-pico.json
@@ -7,7 +7,7 @@
"difficulties": ["easy", "normal", "hard"],
"characters": {
"player": "pico-playable",
- "girlfriend": "gf",
+ "girlfriend": "nene",
"opponent": "dad",
"instrumental": "pico",
"altInstrumentals": []
diff --git a/charts/guns/guns-metadata-pico.json b/charts/guns/guns-metadata-pico.json
index 523e045..f6e9493 100644
--- a/charts/guns/guns-metadata-pico.json
+++ b/charts/guns/guns-metadata-pico.json
@@ -13,7 +13,7 @@
"difficulties": ["easy", "normal", "hard"],
"characters": {
"player": "pico-playable",
- "girlfriend": "gf",
+ "girlfriend": "nene",
"opponent": "tankman",
"instrumental": "pico",
"altInstrumentals": []
diff --git a/charts/philly-nice/philly-nice-metadata-pico.json b/charts/philly-nice/philly-nice-metadata-pico.json
index 5442ec7..e9240a5 100644
--- a/charts/philly-nice/philly-nice-metadata-pico.json
+++ b/charts/philly-nice/philly-nice-metadata-pico.json
@@ -7,7 +7,7 @@
"difficulties": ["easy", "normal", "hard"],
"characters": {
"player": "pico-playable",
- "girlfriend": "gf",
+ "girlfriend": "nene",
"opponent": "pico",
"instrumental": "pico",
"altInstrumentals": []
diff --git a/charts/pico/pico-metadata-pico.json b/charts/pico/pico-metadata-pico.json
index 9d0f7e1..9e3f512 100644
--- a/charts/pico/pico-metadata-pico.json
+++ b/charts/pico/pico-metadata-pico.json
@@ -7,7 +7,7 @@
"difficulties": ["easy", "normal", "hard"],
"characters": {
"player": "pico-playable",
- "girlfriend": "gf",
+ "girlfriend": "nene",
"opponent": "pico",
"instrumental": "pico",
"altInstrumentals": []
diff --git a/charts/ugh/ugh-metadata-pico.json b/charts/ugh/ugh-metadata-pico.json
index 2386889..b3018a6 100644
--- a/charts/ugh/ugh-metadata-pico.json
+++ b/charts/ugh/ugh-metadata-pico.json
@@ -7,7 +7,7 @@
"difficulties": ["easy", "normal", "hard"],
"characters": {
"player": "pico-playable",
- "girlfriend": "gf",
+ "girlfriend": "nene",
"opponent": "tankman",
"instrumental": "pico",
"altInstrumentals": []
diff --git a/images/weeb/animatedEvilSchool.png b/images/weeb/animatedEvilSchool.png
new file mode 100644
index 0000000..7b8be9e
Binary files /dev/null and b/images/weeb/animatedEvilSchool.png differ
diff --git a/images/weeb/animatedEvilSchool.xml b/images/weeb/animatedEvilSchool.xml
new file mode 100644
index 0000000..b59936d
--- /dev/null
+++ b/images/weeb/animatedEvilSchool.xml
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/images/weeb/bgFreaks.png b/images/weeb/bgFreaks.png
new file mode 100644
index 0000000..12800ca
Binary files /dev/null and b/images/weeb/bgFreaks.png differ
diff --git a/images/weeb/bgFreaks.xml b/images/weeb/bgFreaks.xml
new file mode 100644
index 0000000..40c04f4
--- /dev/null
+++ b/images/weeb/bgFreaks.xml
@@ -0,0 +1,63 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/images/weeb/erect/evilSchoolBG.png b/images/weeb/erect/evilSchoolBG.png
new file mode 100644
index 0000000..e9ff73d
Binary files /dev/null and b/images/weeb/erect/evilSchoolBG.png differ
diff --git a/images/weeb/erect/masks/aBotPixelSpeaker_mask.png b/images/weeb/erect/masks/aBotPixelSpeaker_mask.png
new file mode 100644
index 0000000..b823215
Binary files /dev/null and b/images/weeb/erect/masks/aBotPixelSpeaker_mask.png differ
diff --git a/images/weeb/erect/masks/bfPixel_mask.png b/images/weeb/erect/masks/bfPixel_mask.png
new file mode 100644
index 0000000..f364f91
Binary files /dev/null and b/images/weeb/erect/masks/bfPixel_mask.png differ
diff --git a/images/weeb/erect/masks/gfPixel_mask.png b/images/weeb/erect/masks/gfPixel_mask.png
new file mode 100644
index 0000000..a41ce3a
Binary files /dev/null and b/images/weeb/erect/masks/gfPixel_mask.png differ
diff --git a/images/weeb/erect/masks/nenePixel_mask.png b/images/weeb/erect/masks/nenePixel_mask.png
new file mode 100644
index 0000000..1ad960a
Binary files /dev/null and b/images/weeb/erect/masks/nenePixel_mask.png differ
diff --git a/images/weeb/erect/masks/picoPixel_mask.png b/images/weeb/erect/masks/picoPixel_mask.png
new file mode 100644
index 0000000..b6e3515
Binary files /dev/null and b/images/weeb/erect/masks/picoPixel_mask.png differ
diff --git a/images/weeb/erect/masks/senpai_mask.png b/images/weeb/erect/masks/senpai_mask.png
new file mode 100644
index 0000000..ce33122
Binary files /dev/null and b/images/weeb/erect/masks/senpai_mask.png differ
diff --git a/images/weeb/erect/petals.png b/images/weeb/erect/petals.png
new file mode 100644
index 0000000..0c76591
Binary files /dev/null and b/images/weeb/erect/petals.png differ
diff --git a/images/weeb/erect/petals.xml b/images/weeb/erect/petals.xml
new file mode 100644
index 0000000..4fc02ca
--- /dev/null
+++ b/images/weeb/erect/petals.xml
@@ -0,0 +1,59 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/images/weeb/erect/weebBackTrees.png b/images/weeb/erect/weebBackTrees.png
new file mode 100644
index 0000000..4117241
Binary files /dev/null and b/images/weeb/erect/weebBackTrees.png differ
diff --git a/images/weeb/erect/weebSchool.png b/images/weeb/erect/weebSchool.png
new file mode 100644
index 0000000..01d8adf
Binary files /dev/null and b/images/weeb/erect/weebSchool.png differ
diff --git a/images/weeb/erect/weebSky.png b/images/weeb/erect/weebSky.png
new file mode 100644
index 0000000..624eb93
Binary files /dev/null and b/images/weeb/erect/weebSky.png differ
diff --git a/images/weeb/erect/weebStreet.png b/images/weeb/erect/weebStreet.png
new file mode 100644
index 0000000..1628362
Binary files /dev/null and b/images/weeb/erect/weebStreet.png differ
diff --git a/images/weeb/erect/weebTrees.png b/images/weeb/erect/weebTrees.png
new file mode 100644
index 0000000..b423a0b
Binary files /dev/null and b/images/weeb/erect/weebTrees.png differ
diff --git a/images/weeb/erect/weebTrees.txt b/images/weeb/erect/weebTrees.txt
new file mode 100644
index 0000000..7846c00
--- /dev/null
+++ b/images/weeb/erect/weebTrees.txt
@@ -0,0 +1,20 @@
+trees_0 = 0 0 512 512
+trees_1 = 513 0 512 512
+trees_2 = 1539 1026 512 512
+trees_3 = 2052 513 512 512
+trees_4 = 2565 0 512 512
+trees_5 = 3078 0 512 512
+trees_6 = 2565 513 512 512
+trees_7 = 2052 1026 512 512
+trees_8 = 2565 1026 512 512
+trees_9 = 3078 513 512 512
+trees_10 = 1026 0 512 512
+trees_11 = 0 513 512 512
+trees_12 = 513 513 512 512
+trees_13 = 0 1026 512 512
+trees_14 = 513 1026 512 512
+trees_15 = 1026 513 512 512
+trees_16 = 1026 1026 512 512
+trees_17 = 1539 0 512 512
+trees_18 = 1539 513 512 512
+trees_19 = 2052 0 512 512
\ No newline at end of file
diff --git a/images/weeb/erect/weebTreesBack.png b/images/weeb/erect/weebTreesBack.png
new file mode 100644
index 0000000..569f831
Binary files /dev/null and b/images/weeb/erect/weebTreesBack.png differ
diff --git a/images/weeb/evilSchoolBG.png b/images/weeb/evilSchoolBG.png
new file mode 100644
index 0000000..4841512
Binary files /dev/null and b/images/weeb/evilSchoolBG.png differ
diff --git a/images/weeb/evilSchoolFG.png b/images/weeb/evilSchoolFG.png
new file mode 100644
index 0000000..9d4168d
Binary files /dev/null and b/images/weeb/evilSchoolFG.png differ
diff --git a/images/weeb/petals.png b/images/weeb/petals.png
new file mode 100644
index 0000000..3c597ff
Binary files /dev/null and b/images/weeb/petals.png differ
diff --git a/images/weeb/petals.xml b/images/weeb/petals.xml
new file mode 100644
index 0000000..4fc02ca
--- /dev/null
+++ b/images/weeb/petals.xml
@@ -0,0 +1,59 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/images/weeb/pixelUI/arrowEndsNew.png b/images/weeb/pixelUI/arrowEndsNew.png
new file mode 100644
index 0000000..a468c83
Binary files /dev/null and b/images/weeb/pixelUI/arrowEndsNew.png differ
diff --git a/images/weeb/pixelUI/arrows-pixels.png b/images/weeb/pixelUI/arrows-pixels.png
new file mode 100644
index 0000000..d4469d6
Binary files /dev/null and b/images/weeb/pixelUI/arrows-pixels.png differ
diff --git a/images/weeb/pixelUI/arrows-pixels.xml b/images/weeb/pixelUI/arrows-pixels.xml
new file mode 100644
index 0000000..2779acc
--- /dev/null
+++ b/images/weeb/pixelUI/arrows-pixels.xml
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/images/weeb/pixelUI/dialogueBox-evil.png b/images/weeb/pixelUI/dialogueBox-evil.png
new file mode 100644
index 0000000..7924043
Binary files /dev/null and b/images/weeb/pixelUI/dialogueBox-evil.png differ
diff --git a/images/weeb/pixelUI/dialogueBox-evil.xml b/images/weeb/pixelUI/dialogueBox-evil.xml
new file mode 100644
index 0000000..32ddfce
--- /dev/null
+++ b/images/weeb/pixelUI/dialogueBox-evil.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/images/weeb/pixelUI/dialogueBox-evilNew.png b/images/weeb/pixelUI/dialogueBox-evilNew.png
new file mode 100644
index 0000000..35a7359
Binary files /dev/null and b/images/weeb/pixelUI/dialogueBox-evilNew.png differ
diff --git a/images/weeb/pixelUI/dialogueBox-evilNew.xml b/images/weeb/pixelUI/dialogueBox-evilNew.xml
new file mode 100644
index 0000000..c009df1
--- /dev/null
+++ b/images/weeb/pixelUI/dialogueBox-evilNew.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/images/weeb/pixelUI/dialogueBox-new.png b/images/weeb/pixelUI/dialogueBox-new.png
new file mode 100644
index 0000000..f1edeb3
Binary files /dev/null and b/images/weeb/pixelUI/dialogueBox-new.png differ
diff --git a/images/weeb/pixelUI/dialogueBox-new.xml b/images/weeb/pixelUI/dialogueBox-new.xml
new file mode 100644
index 0000000..c6d3733
--- /dev/null
+++ b/images/weeb/pixelUI/dialogueBox-new.xml
@@ -0,0 +1,61 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/images/weeb/pixelUI/dialogueBox-pixel.png b/images/weeb/pixelUI/dialogueBox-pixel.png
new file mode 100644
index 0000000..0322eae
Binary files /dev/null and b/images/weeb/pixelUI/dialogueBox-pixel.png differ
diff --git a/images/weeb/pixelUI/dialogueBox-pixel.xml b/images/weeb/pixelUI/dialogueBox-pixel.xml
new file mode 100644
index 0000000..32f0395
--- /dev/null
+++ b/images/weeb/pixelUI/dialogueBox-pixel.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
diff --git a/images/weeb/pixelUI/dialogueBox-senpaiMad.png b/images/weeb/pixelUI/dialogueBox-senpaiMad.png
new file mode 100644
index 0000000..a547639
Binary files /dev/null and b/images/weeb/pixelUI/dialogueBox-senpaiMad.png differ
diff --git a/images/weeb/pixelUI/dialogueBox-senpaiMad.xml b/images/weeb/pixelUI/dialogueBox-senpaiMad.xml
new file mode 100644
index 0000000..e270b8e
--- /dev/null
+++ b/images/weeb/pixelUI/dialogueBox-senpaiMad.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/images/weeb/pixelUI/hand_textbox.png b/images/weeb/pixelUI/hand_textbox.png
new file mode 100644
index 0000000..22f57c4
Binary files /dev/null and b/images/weeb/pixelUI/hand_textbox.png differ
diff --git a/images/weeb/portrait-boyfriend.png b/images/weeb/portrait-boyfriend.png
new file mode 100644
index 0000000..7c7ac94
Binary files /dev/null and b/images/weeb/portrait-boyfriend.png differ
diff --git a/images/weeb/portrait-boyfriend.xml b/images/weeb/portrait-boyfriend.xml
new file mode 100644
index 0000000..3275f4e
--- /dev/null
+++ b/images/weeb/portrait-boyfriend.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/images/weeb/portrait-nene-peeved.png b/images/weeb/portrait-nene-peeved.png
new file mode 100644
index 0000000..5de693b
Binary files /dev/null and b/images/weeb/portrait-nene-peeved.png differ
diff --git a/images/weeb/portrait-nene-peeved.xml b/images/weeb/portrait-nene-peeved.xml
new file mode 100644
index 0000000..b5abfea
--- /dev/null
+++ b/images/weeb/portrait-nene-peeved.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/images/weeb/portrait-nene.png b/images/weeb/portrait-nene.png
new file mode 100644
index 0000000..1b097eb
Binary files /dev/null and b/images/weeb/portrait-nene.png differ
diff --git a/images/weeb/portrait-nene.xml b/images/weeb/portrait-nene.xml
new file mode 100644
index 0000000..8762c34
--- /dev/null
+++ b/images/weeb/portrait-nene.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/images/weeb/portrait-pico-peeved.png b/images/weeb/portrait-pico-peeved.png
new file mode 100644
index 0000000..4a46979
Binary files /dev/null and b/images/weeb/portrait-pico-peeved.png differ
diff --git a/images/weeb/portrait-pico-peeved.xml b/images/weeb/portrait-pico-peeved.xml
new file mode 100644
index 0000000..3363771
--- /dev/null
+++ b/images/weeb/portrait-pico-peeved.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/images/weeb/portrait-pico.png b/images/weeb/portrait-pico.png
new file mode 100644
index 0000000..8c1c9cf
Binary files /dev/null and b/images/weeb/portrait-pico.png differ
diff --git a/images/weeb/portrait-pico.xml b/images/weeb/portrait-pico.xml
new file mode 100644
index 0000000..d80c8e5
--- /dev/null
+++ b/images/weeb/portrait-pico.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/images/weeb/portrait-senpai-angry.png b/images/weeb/portrait-senpai-angry.png
new file mode 100644
index 0000000..4ba63ac
Binary files /dev/null and b/images/weeb/portrait-senpai-angry.png differ
diff --git a/images/weeb/portrait-senpai-angry.xml b/images/weeb/portrait-senpai-angry.xml
new file mode 100644
index 0000000..450f211
--- /dev/null
+++ b/images/weeb/portrait-senpai-angry.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/images/weeb/portrait-senpai-bwuh.png b/images/weeb/portrait-senpai-bwuh.png
new file mode 100644
index 0000000..beded47
Binary files /dev/null and b/images/weeb/portrait-senpai-bwuh.png differ
diff --git a/images/weeb/portrait-senpai-bwuh.xml b/images/weeb/portrait-senpai-bwuh.xml
new file mode 100644
index 0000000..d692f1f
--- /dev/null
+++ b/images/weeb/portrait-senpai-bwuh.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/images/weeb/portrait-senpai.png b/images/weeb/portrait-senpai.png
new file mode 100644
index 0000000..b61ad42
Binary files /dev/null and b/images/weeb/portrait-senpai.png differ
diff --git a/images/weeb/portrait-senpai.xml b/images/weeb/portrait-senpai.xml
new file mode 100644
index 0000000..5a2f57c
--- /dev/null
+++ b/images/weeb/portrait-senpai.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/images/weeb/senpaiCrazy.png b/images/weeb/senpaiCrazy.png
new file mode 100644
index 0000000..85d6fee
Binary files /dev/null and b/images/weeb/senpaiCrazy.png differ
diff --git a/images/weeb/senpaiCrazy.xml b/images/weeb/senpaiCrazy.xml
new file mode 100644
index 0000000..d06a0e3
--- /dev/null
+++ b/images/weeb/senpaiCrazy.xml
@@ -0,0 +1,128 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/images/weeb/spiritFaceForward.png b/images/weeb/spiritFaceForward.png
new file mode 100644
index 0000000..93c7ed0
Binary files /dev/null and b/images/weeb/spiritFaceForward.png differ
diff --git a/images/weeb/spiritFaceForward.xml b/images/weeb/spiritFaceForward.xml
new file mode 100644
index 0000000..f0d0437
--- /dev/null
+++ b/images/weeb/spiritFaceForward.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/images/weeb/weebBackTrees.png b/images/weeb/weebBackTrees.png
new file mode 100644
index 0000000..3324287
Binary files /dev/null and b/images/weeb/weebBackTrees.png differ
diff --git a/images/weeb/weebSchool.png b/images/weeb/weebSchool.png
new file mode 100644
index 0000000..6324c7d
Binary files /dev/null and b/images/weeb/weebSchool.png differ
diff --git a/images/weeb/weebSky.png b/images/weeb/weebSky.png
new file mode 100644
index 0000000..12c7068
Binary files /dev/null and b/images/weeb/weebSky.png differ
diff --git a/images/weeb/weebStreet.png b/images/weeb/weebStreet.png
new file mode 100644
index 0000000..31a2312
Binary files /dev/null and b/images/weeb/weebStreet.png differ
diff --git a/images/weeb/weebTrees.png b/images/weeb/weebTrees.png
new file mode 100644
index 0000000..9071e9a
Binary files /dev/null and b/images/weeb/weebTrees.png differ
diff --git a/images/weeb/weebTrees.txt b/images/weeb/weebTrees.txt
new file mode 100644
index 0000000..7846c00
--- /dev/null
+++ b/images/weeb/weebTrees.txt
@@ -0,0 +1,20 @@
+trees_0 = 0 0 512 512
+trees_1 = 513 0 512 512
+trees_2 = 1539 1026 512 512
+trees_3 = 2052 513 512 512
+trees_4 = 2565 0 512 512
+trees_5 = 3078 0 512 512
+trees_6 = 2565 513 512 512
+trees_7 = 2052 1026 512 512
+trees_8 = 2565 1026 512 512
+trees_9 = 3078 513 512 512
+trees_10 = 1026 0 512 512
+trees_11 = 0 513 512 512
+trees_12 = 513 513 512 512
+trees_13 = 0 1026 512 512
+trees_14 = 513 1026 512 512
+trees_15 = 1026 513 512 512
+trees_16 = 1026 1026 512 512
+trees_17 = 1539 0 512 512
+trees_18 = 1539 513 512 512
+trees_19 = 2052 0 512 512
\ No newline at end of file
diff --git a/images/weeb/weebTrees.xml b/images/weeb/weebTrees.xml
new file mode 100644
index 0000000..ba229dc
--- /dev/null
+++ b/images/weeb/weebTrees.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/images/weeb/weebTreesBack.png b/images/weeb/weebTreesBack.png
new file mode 100644
index 0000000..c800d85
Binary files /dev/null and b/images/weeb/weebTreesBack.png differ
diff --git a/modules/loveanimate/AnimateAtlas.lua b/modules/loveanimate/AnimateAtlas.lua
index e0c4a75..474eada 100644
--- a/modules/loveanimate/AnimateAtlas.lua
+++ b/modules/loveanimate/AnimateAtlas.lua
@@ -529,7 +529,6 @@ function AnimateAtlas:update(dt)
frameIndex = 0
end
local loopMode = self._curSymbol.data[optimized and "LP" or "loop"]
- print(loopMode)
local library = self.libraries[symbolName]
local symbolTimeline = library.data
@@ -541,7 +540,7 @@ function AnimateAtlas:update(dt)
if frameIndex < 0 then
frameIndex = length - 1
end
- if frameIndex > length - 2 then
+ if frameIndex > length - 1 then
frameIndex = 0
end
elseif loopMode == "playonce" or loopMode == "PO" then
diff --git a/modules/types/button.lua b/modules/types/button.lua
index 6f8bdb9..ab2b1ad 100644
--- a/modules/types/button.lua
+++ b/modules/types/button.lua
@@ -120,6 +120,7 @@ function Button(position, size, callback, enabled)
end
---@param sprite engine.sprite
+---@return engine.spritebutton
function SpriteButton(sprite, callback, enabled)
print("Spritebutton")
sprite.__index = SpriteButtonClass
diff --git a/modules/types/character.lua b/modules/types/character.lua
index 8cfbfe6..e362bdf 100644
--- a/modules/types/character.lua
+++ b/modules/types/character.lua
@@ -85,14 +85,15 @@ function _G.Character(name)
animInfo = {},
sprite = sprite,
singing = false,
- stagePosition = Vector2(0, 0), -- Changeable
stageCamera = Vector2(parsed.camera_position[1], parsed.camera_position[2]),
+ stagePosition = Vector2(),
+ hasStagePosition = false,
flipX = parsed.flip_x,
beats = parsed.beats or 4,
animation = "idle",
icon = parsed.healthicon,
starterFrame = parsed.starter_frame,
- colors = parsed.healthbar_colors
+ colors = parsed.healthbar_colors,
}, CharacterClass)
for index, alias in next, parsed.animations do
@@ -130,6 +131,11 @@ function _G.Character(name)
newCharacter.module = loadedModule
end
+ if parsed.stage_positions and parsed.stage_positions[stage.name] then
+ newCharacter.stagePosition = Vector2(parsed.stage_positions[stage.name][1], parsed.stage_positions[stage.name][2])
+ newCharacter.hasStagePosition = true
+ end
+
return newCharacter
end
diff --git a/sprites/characters/Gooey.png b/sprites/characters/Gooey.png
deleted file mode 100644
index 30dfbcb..0000000
Binary files a/sprites/characters/Gooey.png and /dev/null differ
diff --git a/sprites/characters/abot/aBotViz.png b/sprites/characters/abot/aBotViz.png
index 046333e..7037a4f 100644
Binary files a/sprites/characters/abot/aBotViz.png and b/sprites/characters/abot/aBotViz.png differ
diff --git a/sprites/characters/abot/aBotViz.xml b/sprites/characters/abot/aBotViz.xml
index 3e27ba2..b1f29b2 100644
--- a/sprites/characters/abot/aBotViz.xml
+++ b/sprites/characters/abot/aBotViz.xml
@@ -1,45 +1,48 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/sprites/characters/abot/systemEyes/Animation.json b/sprites/characters/abot/systemEyes/Animation.json
index feb6091..c6ddd94 100644
--- a/sprites/characters/abot/systemEyes/Animation.json
+++ b/sprites/characters/abot/systemEyes/Animation.json
@@ -1 +1,780 @@
-{"ANIMATION":{"name":"gf_assets(1)","StageInstance":{"SYMBOL_Instance":{"SYMBOL_name":"a bot eyes lookin","Instance_Name":"","symbolType":"graphic","firstFrame":0,"loop":"loop","transformationPoint":{"x":52.85,"y":19.15},"Matrix3D":{"m00":1.0,"m01":0.0,"m02":0.0,"m03":0.0,"m10":0.0,"m11":1.0,"m12":0.0,"m13":0.0,"m20":0.0,"m21":0.0,"m22":1.0,"m23":0.0,"m30":562.9,"m31":731.2,"m32":0.0,"m33":1.0},"DecomposedMatrix":{"Position":{"x":562.9,"y":731.2,"z":0.0},"Rotation":{"x":0.0,"y":-0.0,"z":0.0},"Scaling":{"x":1.0,"y":1.0,"z":1.0}}}},"SYMBOL_name":"a bot eyes lookin","TIMELINE":{"LAYERS":[{"Layer_name":"Layer_1","Frames":[{"index":0,"duration":8,"elements":[{"SYMBOL_Instance":{"SYMBOL_name":"abot eyes","Instance_Name":"","symbolType":"graphic","firstFrame":0,"loop":"loop","transformationPoint":{"x":53.2,"y":20.25},"Matrix3D":{"m00":1.0,"m01":0.0,"m02":0.0,"m03":0.0,"m10":0.0,"m11":1.0,"m12":0.0,"m13":0.0,"m20":0.0,"m21":0.0,"m22":1.0,"m23":0.0,"m30":0.0,"m31":-0.95,"m32":0.0,"m33":1.0},"DecomposedMatrix":{"Position":{"x":0.0,"y":-0.95,"z":0.0},"Rotation":{"x":0.0,"y":-0.0,"z":0.0},"Scaling":{"x":1.0,"y":1.0,"z":1.0}}}}]},{"index":8,"duration":2,"elements":[{"SYMBOL_Instance":{"SYMBOL_name":"abot eyes","Instance_Name":"","symbolType":"graphic","firstFrame":0,"loop":"loop","transformationPoint":{"x":53.2,"y":20.25},"Matrix3D":{"m00":1.0,"m01":0.0,"m02":0.0,"m03":0.0,"m10":0.0,"m11":1.0,"m12":0.0,"m13":0.0,"m20":0.0,"m21":0.0,"m22":1.0,"m23":0.0,"m30":-0.75,"m31":-0.95,"m32":0.0,"m33":1.0},"DecomposedMatrix":{"Position":{"x":-0.75,"y":-0.95,"z":0.0},"Rotation":{"x":0.0,"y":-0.0,"z":0.0},"Scaling":{"x":1.0,"y":1.0,"z":1.0}}}}]},{"index":10,"duration":1,"elements":[{"SYMBOL_Instance":{"SYMBOL_name":"abot eyes","Instance_Name":"","symbolType":"graphic","firstFrame":0,"loop":"loop","transformationPoint":{"x":53.2,"y":20.25},"Matrix3D":{"m00":1.0,"m01":0.0,"m02":0.0,"m03":0.0,"m10":0.0,"m11":1.0,"m12":0.0,"m13":0.0,"m20":0.0,"m21":0.0,"m22":1.0,"m23":0.0,"m30":-4.0,"m31":-0.95,"m32":0.0,"m33":1.0},"DecomposedMatrix":{"Position":{"x":-4.0,"y":-0.95,"z":0.0},"Rotation":{"x":0.0,"y":-0.0,"z":0.0},"Scaling":{"x":1.0,"y":1.0,"z":1.0}}}}]},{"index":11,"duration":2,"elements":[{"SYMBOL_Instance":{"SYMBOL_name":"abot eyes 2","Instance_Name":"","symbolType":"graphic","firstFrame":0,"loop":"loop","transformationPoint":{"x":39.800000000000007,"y":11.75},"Matrix3D":{"m00":1.0,"m01":0.0,"m02":0.0,"m03":0.0,"m10":0.0,"m11":1.0,"m12":0.0,"m13":0.0,"m20":0.0,"m21":0.0,"m22":1.0,"m23":0.0,"m30":-6.75,"m31":17.35,"m32":0.0,"m33":1.0},"DecomposedMatrix":{"Position":{"x":-6.75,"y":17.35,"z":0.0},"Rotation":{"x":0.0,"y":-0.0,"z":0.0},"Scaling":{"x":1.0,"y":1.0,"z":1.0}}}}]},{"index":13,"duration":3,"elements":[{"SYMBOL_Instance":{"SYMBOL_name":"abot eyes 2","Instance_Name":"","symbolType":"graphic","firstFrame":0,"loop":"loop","transformationPoint":{"x":39.800000000000007,"y":11.75},"Matrix3D":{"m00":1.0,"m01":0.0,"m02":0.0,"m03":0.0,"m10":0.0,"m11":1.0,"m12":0.0,"m13":0.0,"m20":0.0,"m21":0.0,"m22":1.0,"m23":0.0,"m30":-8.5,"m31":17.35,"m32":0.0,"m33":1.0},"DecomposedMatrix":{"Position":{"x":-8.5,"y":17.35,"z":0.0},"Rotation":{"x":0.0,"y":-0.0,"z":0.0},"Scaling":{"x":1.0,"y":1.0,"z":1.0}}}}]},{"index":16,"duration":6,"elements":[{"SYMBOL_Instance":{"SYMBOL_name":"abot eyes 2","Instance_Name":"","symbolType":"graphic","firstFrame":0,"loop":"loop","transformationPoint":{"x":39.800000000000007,"y":11.75},"Matrix3D":{"m00":1.0,"m01":0.0,"m02":0.0,"m03":0.0,"m10":0.0,"m11":1.0,"m12":0.0,"m13":0.0,"m20":0.0,"m21":0.0,"m22":1.0,"m23":0.0,"m30":-9.0,"m31":17.35,"m32":0.0,"m33":1.0},"DecomposedMatrix":{"Position":{"x":-9.0,"y":17.35,"z":0.0},"Rotation":{"x":0.0,"y":-0.0,"z":0.0},"Scaling":{"x":1.0,"y":1.0,"z":1.0}}}}]},{"index":22,"duration":2,"elements":[{"SYMBOL_Instance":{"SYMBOL_name":"abot eyes 2","Instance_Name":"","symbolType":"graphic","firstFrame":0,"loop":"loop","transformationPoint":{"x":39.800000000000007,"y":11.75},"Matrix3D":{"m00":1.0,"m01":0.0,"m02":0.0,"m03":0.0,"m10":0.0,"m11":1.0,"m12":0.0,"m13":0.0,"m20":0.0,"m21":0.0,"m22":1.0,"m23":0.0,"m30":-8.25,"m31":17.35,"m32":0.0,"m33":1.0},"DecomposedMatrix":{"Position":{"x":-8.25,"y":17.35,"z":0.0},"Rotation":{"x":0.0,"y":-0.0,"z":0.0},"Scaling":{"x":1.0,"y":1.0,"z":1.0}}}}]},{"index":24,"duration":1,"elements":[{"SYMBOL_Instance":{"SYMBOL_name":"abot eyes 2","Instance_Name":"","symbolType":"graphic","firstFrame":0,"loop":"loop","transformationPoint":{"x":39.800000000000007,"y":11.75},"Matrix3D":{"m00":1.0,"m01":0.0,"m02":0.0,"m03":0.0,"m10":0.0,"m11":1.0,"m12":0.0,"m13":0.0,"m20":0.0,"m21":0.0,"m22":1.0,"m23":0.0,"m30":-6.75,"m31":17.35,"m32":0.0,"m33":1.0},"DecomposedMatrix":{"Position":{"x":-6.75,"y":17.35,"z":0.0},"Rotation":{"x":0.0,"y":-0.0,"z":0.0},"Scaling":{"x":1.0,"y":1.0,"z":1.0}}}}]},{"index":25,"duration":2,"elements":[{"SYMBOL_Instance":{"SYMBOL_name":"abot eyes","Instance_Name":"","symbolType":"graphic","firstFrame":0,"loop":"loop","transformationPoint":{"x":53.2,"y":20.25},"Matrix3D":{"m00":1.0,"m01":0.0,"m02":0.0,"m03":0.0,"m10":0.0,"m11":1.0,"m12":0.0,"m13":0.0,"m20":0.0,"m21":0.0,"m22":1.0,"m23":0.0,"m30":-3.0,"m31":-0.45,"m32":0.0,"m33":1.0},"DecomposedMatrix":{"Position":{"x":-3.0,"y":-0.45,"z":0.0},"Rotation":{"x":0.0,"y":-0.0,"z":0.0},"Scaling":{"x":1.0,"y":1.0,"z":1.0}}}}]},{"index":27,"duration":3,"elements":[{"SYMBOL_Instance":{"SYMBOL_name":"abot eyes","Instance_Name":"","symbolType":"graphic","firstFrame":0,"loop":"loop","transformationPoint":{"x":53.2,"y":20.25},"Matrix3D":{"m00":1.0,"m01":0.0,"m02":0.0,"m03":0.0,"m10":0.0,"m11":1.0,"m12":0.0,"m13":0.0,"m20":0.0,"m21":0.0,"m22":1.0,"m23":0.0,"m30":-0.5,"m31":-0.95,"m32":0.0,"m33":1.0},"DecomposedMatrix":{"Position":{"x":-0.5,"y":-0.95,"z":0.0},"Rotation":{"x":0.0,"y":-0.0,"z":0.0},"Scaling":{"x":1.0,"y":1.0,"z":1.0}}}}]},{"index":30,"duration":2,"elements":[{"SYMBOL_Instance":{"SYMBOL_name":"abot eyes","Instance_Name":"","symbolType":"graphic","firstFrame":0,"loop":"loop","transformationPoint":{"x":53.2,"y":20.25},"Matrix3D":{"m00":1.0,"m01":0.0,"m02":0.0,"m03":0.0,"m10":0.0,"m11":1.0,"m12":0.0,"m13":0.0,"m20":0.0,"m21":0.0,"m22":1.0,"m23":0.0,"m30":0.0,"m31":-0.95,"m32":0.0,"m33":1.0},"DecomposedMatrix":{"Position":{"x":0.0,"y":-0.95,"z":0.0},"Rotation":{"x":0.0,"y":-0.0,"z":0.0},"Scaling":{"x":1.0,"y":1.0,"z":1.0}}}}]}]}]}},"SYMBOL_DICTIONARY":{"Symbols":[{"SYMBOL_name":"abot eyes","TIMELINE":{"LAYERS":[{"Layer_name":"Layer_2","Frames":[{"index":0,"duration":1,"elements":[{"ATLAS_SPRITE_instance":{"name":"0000","Matrix3D":{"m00":1.0,"m01":0.0,"m02":0.0,"m03":0.0,"m10":0.0,"m11":1.0,"m12":0.0,"m13":0.0,"m20":0.0,"m21":0.0,"m22":1.0,"m23":0.0,"m30":0.0,"m31":1.0,"m32":0.0,"m33":1.0},"DecomposedMatrix":{"Position":{"x":0.0,"y":1.0,"z":0.0},"Rotation":{"x":0.0,"y":-0.0,"z":0.0},"Scaling":{"x":1.0,"y":1.0,"z":1.0}}}}]}]}]}},{"SYMBOL_name":"abot eyes 2","TIMELINE":{"LAYERS":[{"Layer_name":"Layer_2","Frames":[{"index":0,"duration":1,"elements":[{"ATLAS_SPRITE_instance":{"name":"0001","Matrix3D":{"m00":1.0,"m01":0.0,"m02":0.0,"m03":0.0,"m10":0.0,"m11":1.0,"m12":0.0,"m13":0.0,"m20":0.0,"m21":0.0,"m22":1.0,"m23":0.0,"m30":0.0,"m31":0.0,"m32":0.0,"m33":1.0},"DecomposedMatrix":{"Position":{"x":0.0,"y":0.0,"z":0.0},"Rotation":{"x":0.0,"y":-0.0,"z":0.0},"Scaling":{"x":1.0,"y":1.0,"z":1.0}}}}]}]}]}}]},"metadata":{"framerate":24.0}}
+{
+ "ANIMATION": {
+ "name": "gf_assets(1)",
+ "StageInstance": {
+ "SYMBOL_Instance": {
+ "SYMBOL_name": "a bot eyes lookin",
+ "Instance_Name": "",
+ "symbolType": "graphic",
+ "firstFrame": 0,
+ "loop": "loop",
+ "transformationPoint": {
+ "x": 52.85,
+ "y": 19.15
+ },
+ "Matrix3D": {
+ "m00": 1.0,
+ "m01": 0.0,
+ "m02": 0.0,
+ "m03": 0.0,
+ "m10": 0.0,
+ "m11": 1.0,
+ "m12": 0.0,
+ "m13": 0.0,
+ "m20": 0.0,
+ "m21": 0.0,
+ "m22": 1.0,
+ "m23": 0.0,
+ "m30": 562.9,
+ "m31": 731.2,
+ "m32": 0.0,
+ "m33": 1.0
+ },
+ "DecomposedMatrix": {
+ "Position": {
+ "x": 562.9,
+ "y": 731.2,
+ "z": 0.0
+ },
+ "Rotation": {
+ "x": 0.0,
+ "y": -0.0,
+ "z": 0.0
+ },
+ "Scaling": {
+ "x": 1.0,
+ "y": 1.0,
+ "z": 1.0
+ }
+ }
+ }
+ },
+ "SYMBOL_name": "a bot eyes lookin",
+ "TIMELINE": {
+ "LAYERS": [
+ {
+ "Layer_name": "Layer_1",
+ "Frames": [
+ {
+ "index": 0,
+ "duration": 8,
+ "elements": [
+ {
+ "SYMBOL_Instance": {
+ "SYMBOL_name": "abot eyes",
+ "Instance_Name": "",
+ "symbolType": "graphic",
+ "firstFrame": 0,
+ "loop": "loop",
+ "transformationPoint": {
+ "x": 53.2,
+ "y": 20.25
+ },
+ "Matrix3D": {
+ "m00": 1.0,
+ "m01": 0.0,
+ "m02": 0.0,
+ "m03": 0.0,
+ "m10": 0.0,
+ "m11": 1.0,
+ "m12": 0.0,
+ "m13": 0.0,
+ "m20": 0.0,
+ "m21": 0.0,
+ "m22": 1.0,
+ "m23": 0.0,
+ "m30": 0.0,
+ "m31": -0.95,
+ "m32": 0.0,
+ "m33": 1.0
+ },
+ "DecomposedMatrix": {
+ "Position": {
+ "x": 0.0,
+ "y": -0.95,
+ "z": 0.0
+ },
+ "Rotation": {
+ "x": 0.0,
+ "y": -0.0,
+ "z": 0.0
+ },
+ "Scaling": {
+ "x": 1.0,
+ "y": 1.0,
+ "z": 1.0
+ }
+ }
+ }
+ }
+ ]
+ },
+ {
+ "index": 8,
+ "duration": 2,
+ "elements": [
+ {
+ "SYMBOL_Instance": {
+ "SYMBOL_name": "abot eyes",
+ "Instance_Name": "",
+ "symbolType": "graphic",
+ "firstFrame": 0,
+ "loop": "loop",
+ "transformationPoint": {
+ "x": 53.2,
+ "y": 20.25
+ },
+ "Matrix3D": {
+ "m00": 1.0,
+ "m01": 0.0,
+ "m02": 0.0,
+ "m03": 0.0,
+ "m10": 0.0,
+ "m11": 1.0,
+ "m12": 0.0,
+ "m13": 0.0,
+ "m20": 0.0,
+ "m21": 0.0,
+ "m22": 1.0,
+ "m23": 0.0,
+ "m30": -0.75,
+ "m31": -0.95,
+ "m32": 0.0,
+ "m33": 1.0
+ },
+ "DecomposedMatrix": {
+ "Position": {
+ "x": -0.75,
+ "y": -0.95,
+ "z": 0.0
+ },
+ "Rotation": {
+ "x": 0.0,
+ "y": -0.0,
+ "z": 0.0
+ },
+ "Scaling": {
+ "x": 1.0,
+ "y": 1.0,
+ "z": 1.0
+ }
+ }
+ }
+ }
+ ]
+ },
+ {
+ "index": 10,
+ "duration": 1,
+ "elements": [
+ {
+ "SYMBOL_Instance": {
+ "SYMBOL_name": "abot eyes",
+ "Instance_Name": "",
+ "symbolType": "graphic",
+ "firstFrame": 0,
+ "loop": "loop",
+ "transformationPoint": {
+ "x": 53.2,
+ "y": 20.25
+ },
+ "Matrix3D": {
+ "m00": 1.0,
+ "m01": 0.0,
+ "m02": 0.0,
+ "m03": 0.0,
+ "m10": 0.0,
+ "m11": 1.0,
+ "m12": 0.0,
+ "m13": 0.0,
+ "m20": 0.0,
+ "m21": 0.0,
+ "m22": 1.0,
+ "m23": 0.0,
+ "m30": -4.0,
+ "m31": -0.95,
+ "m32": 0.0,
+ "m33": 1.0
+ },
+ "DecomposedMatrix": {
+ "Position": {
+ "x": -4.0,
+ "y": -0.95,
+ "z": 0.0
+ },
+ "Rotation": {
+ "x": 0.0,
+ "y": -0.0,
+ "z": 0.0
+ },
+ "Scaling": {
+ "x": 1.0,
+ "y": 1.0,
+ "z": 1.0
+ }
+ }
+ }
+ }
+ ]
+ },
+ {
+ "index": 11,
+ "duration": 2,
+ "elements": [
+ {
+ "SYMBOL_Instance": {
+ "SYMBOL_name": "abot eyes 2",
+ "Instance_Name": "",
+ "symbolType": "graphic",
+ "firstFrame": 0,
+ "loop": "loop",
+ "transformationPoint": {
+ "x": 39.800000000000007,
+ "y": 11.75
+ },
+ "Matrix3D": {
+ "m00": 1.0,
+ "m01": 0.0,
+ "m02": 0.0,
+ "m03": 0.0,
+ "m10": 0.0,
+ "m11": 1.0,
+ "m12": 0.0,
+ "m13": 0.0,
+ "m20": 0.0,
+ "m21": 0.0,
+ "m22": 1.0,
+ "m23": 0.0,
+ "m30": -6.75,
+ "m31": 17.35,
+ "m32": 0.0,
+ "m33": 1.0
+ },
+ "DecomposedMatrix": {
+ "Position": {
+ "x": -6.75,
+ "y": 17.35,
+ "z": 0.0
+ },
+ "Rotation": {
+ "x": 0.0,
+ "y": -0.0,
+ "z": 0.0
+ },
+ "Scaling": {
+ "x": 1.0,
+ "y": 1.0,
+ "z": 1.0
+ }
+ }
+ }
+ }
+ ]
+ },
+ {
+ "index": 13,
+ "duration": 3,
+ "elements": [
+ {
+ "SYMBOL_Instance": {
+ "SYMBOL_name": "abot eyes 2",
+ "Instance_Name": "",
+ "symbolType": "graphic",
+ "firstFrame": 0,
+ "loop": "loop",
+ "transformationPoint": {
+ "x": 39.800000000000007,
+ "y": 11.75
+ },
+ "Matrix3D": {
+ "m00": 1.0,
+ "m01": 0.0,
+ "m02": 0.0,
+ "m03": 0.0,
+ "m10": 0.0,
+ "m11": 1.0,
+ "m12": 0.0,
+ "m13": 0.0,
+ "m20": 0.0,
+ "m21": 0.0,
+ "m22": 1.0,
+ "m23": 0.0,
+ "m30": -8.5,
+ "m31": 17.35,
+ "m32": 0.0,
+ "m33": 1.0
+ },
+ "DecomposedMatrix": {
+ "Position": {
+ "x": -8.5,
+ "y": 17.35,
+ "z": 0.0
+ },
+ "Rotation": {
+ "x": 0.0,
+ "y": -0.0,
+ "z": 0.0
+ },
+ "Scaling": {
+ "x": 1.0,
+ "y": 1.0,
+ "z": 1.0
+ }
+ }
+ }
+ }
+ ]
+ },
+ {
+ "index": 16,
+ "duration": 6,
+ "elements": [
+ {
+ "SYMBOL_Instance": {
+ "SYMBOL_name": "abot eyes 2",
+ "Instance_Name": "",
+ "symbolType": "graphic",
+ "firstFrame": 0,
+ "loop": "loop",
+ "transformationPoint": {
+ "x": 39.800000000000007,
+ "y": 11.75
+ },
+ "Matrix3D": {
+ "m00": 1.0,
+ "m01": 0.0,
+ "m02": 0.0,
+ "m03": 0.0,
+ "m10": 0.0,
+ "m11": 1.0,
+ "m12": 0.0,
+ "m13": 0.0,
+ "m20": 0.0,
+ "m21": 0.0,
+ "m22": 1.0,
+ "m23": 0.0,
+ "m30": -9.0,
+ "m31": 17.35,
+ "m32": 0.0,
+ "m33": 1.0
+ },
+ "DecomposedMatrix": {
+ "Position": {
+ "x": -9.0,
+ "y": 17.35,
+ "z": 0.0
+ },
+ "Rotation": {
+ "x": 0.0,
+ "y": -0.0,
+ "z": 0.0
+ },
+ "Scaling": {
+ "x": 1.0,
+ "y": 1.0,
+ "z": 1.0
+ }
+ }
+ }
+ }
+ ]
+ },
+ {
+ "index": 22,
+ "duration": 2,
+ "elements": [
+ {
+ "SYMBOL_Instance": {
+ "SYMBOL_name": "abot eyes 2",
+ "Instance_Name": "",
+ "symbolType": "graphic",
+ "firstFrame": 0,
+ "loop": "loop",
+ "transformationPoint": {
+ "x": 39.800000000000007,
+ "y": 11.75
+ },
+ "Matrix3D": {
+ "m00": 1.0,
+ "m01": 0.0,
+ "m02": 0.0,
+ "m03": 0.0,
+ "m10": 0.0,
+ "m11": 1.0,
+ "m12": 0.0,
+ "m13": 0.0,
+ "m20": 0.0,
+ "m21": 0.0,
+ "m22": 1.0,
+ "m23": 0.0,
+ "m30": -8.25,
+ "m31": 17.35,
+ "m32": 0.0,
+ "m33": 1.0
+ },
+ "DecomposedMatrix": {
+ "Position": {
+ "x": -8.25,
+ "y": 17.35,
+ "z": 0.0
+ },
+ "Rotation": {
+ "x": 0.0,
+ "y": -0.0,
+ "z": 0.0
+ },
+ "Scaling": {
+ "x": 1.0,
+ "y": 1.0,
+ "z": 1.0
+ }
+ }
+ }
+ }
+ ]
+ },
+ {
+ "index": 24,
+ "duration": 1,
+ "elements": [
+ {
+ "SYMBOL_Instance": {
+ "SYMBOL_name": "abot eyes 2",
+ "Instance_Name": "",
+ "symbolType": "graphic",
+ "firstFrame": 0,
+ "loop": "loop",
+ "transformationPoint": {
+ "x": 39.800000000000007,
+ "y": 11.75
+ },
+ "Matrix3D": {
+ "m00": 1.0,
+ "m01": 0.0,
+ "m02": 0.0,
+ "m03": 0.0,
+ "m10": 0.0,
+ "m11": 1.0,
+ "m12": 0.0,
+ "m13": 0.0,
+ "m20": 0.0,
+ "m21": 0.0,
+ "m22": 1.0,
+ "m23": 0.0,
+ "m30": -6.75,
+ "m31": 17.35,
+ "m32": 0.0,
+ "m33": 1.0
+ },
+ "DecomposedMatrix": {
+ "Position": {
+ "x": -6.75,
+ "y": 17.35,
+ "z": 0.0
+ },
+ "Rotation": {
+ "x": 0.0,
+ "y": -0.0,
+ "z": 0.0
+ },
+ "Scaling": {
+ "x": 1.0,
+ "y": 1.0,
+ "z": 1.0
+ }
+ }
+ }
+ }
+ ]
+ },
+ {
+ "index": 25,
+ "duration": 2,
+ "elements": [
+ {
+ "SYMBOL_Instance": {
+ "SYMBOL_name": "abot eyes",
+ "Instance_Name": "",
+ "symbolType": "graphic",
+ "firstFrame": 0,
+ "loop": "loop",
+ "transformationPoint": {
+ "x": 53.2,
+ "y": 20.25
+ },
+ "Matrix3D": {
+ "m00": 1.0,
+ "m01": 0.0,
+ "m02": 0.0,
+ "m03": 0.0,
+ "m10": 0.0,
+ "m11": 1.0,
+ "m12": 0.0,
+ "m13": 0.0,
+ "m20": 0.0,
+ "m21": 0.0,
+ "m22": 1.0,
+ "m23": 0.0,
+ "m30": -3.0,
+ "m31": -0.45,
+ "m32": 0.0,
+ "m33": 1.0
+ },
+ "DecomposedMatrix": {
+ "Position": {
+ "x": -3.0,
+ "y": -0.45,
+ "z": 0.0
+ },
+ "Rotation": {
+ "x": 0.0,
+ "y": -0.0,
+ "z": 0.0
+ },
+ "Scaling": {
+ "x": 1.0,
+ "y": 1.0,
+ "z": 1.0
+ }
+ }
+ }
+ }
+ ]
+ },
+ {
+ "index": 27,
+ "duration": 3,
+ "elements": [
+ {
+ "SYMBOL_Instance": {
+ "SYMBOL_name": "abot eyes",
+ "Instance_Name": "",
+ "symbolType": "graphic",
+ "firstFrame": 0,
+ "loop": "loop",
+ "transformationPoint": {
+ "x": 53.2,
+ "y": 20.25
+ },
+ "Matrix3D": {
+ "m00": 1.0,
+ "m01": 0.0,
+ "m02": 0.0,
+ "m03": 0.0,
+ "m10": 0.0,
+ "m11": 1.0,
+ "m12": 0.0,
+ "m13": 0.0,
+ "m20": 0.0,
+ "m21": 0.0,
+ "m22": 1.0,
+ "m23": 0.0,
+ "m30": -0.5,
+ "m31": -0.95,
+ "m32": 0.0,
+ "m33": 1.0
+ },
+ "DecomposedMatrix": {
+ "Position": {
+ "x": -0.5,
+ "y": -0.95,
+ "z": 0.0
+ },
+ "Rotation": {
+ "x": 0.0,
+ "y": -0.0,
+ "z": 0.0
+ },
+ "Scaling": {
+ "x": 1.0,
+ "y": 1.0,
+ "z": 1.0
+ }
+ }
+ }
+ }
+ ]
+ },
+ {
+ "index": 30,
+ "duration": 2,
+ "elements": [
+ {
+ "SYMBOL_Instance": {
+ "SYMBOL_name": "abot eyes",
+ "Instance_Name": "",
+ "symbolType": "graphic",
+ "firstFrame": 0,
+ "loop": "loop",
+ "transformationPoint": {
+ "x": 53.2,
+ "y": 20.25
+ },
+ "Matrix3D": {
+ "m00": 1.0,
+ "m01": 0.0,
+ "m02": 0.0,
+ "m03": 0.0,
+ "m10": 0.0,
+ "m11": 1.0,
+ "m12": 0.0,
+ "m13": 0.0,
+ "m20": 0.0,
+ "m21": 0.0,
+ "m22": 1.0,
+ "m23": 0.0,
+ "m30": 0.0,
+ "m31": -0.95,
+ "m32": 0.0,
+ "m33": 1.0
+ },
+ "DecomposedMatrix": {
+ "Position": {
+ "x": 0.0,
+ "y": -0.95,
+ "z": 0.0
+ },
+ "Rotation": {
+ "x": 0.0,
+ "y": -0.0,
+ "z": 0.0
+ },
+ "Scaling": {
+ "x": 1.0,
+ "y": 1.0,
+ "z": 1.0
+ }
+ }
+ }
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ },
+ "SYMBOL_DICTIONARY": {
+ "Symbols": [
+ {
+ "SYMBOL_name": "abot eyes",
+ "TIMELINE": {
+ "LAYERS": [
+ {
+ "Layer_name": "Layer_2",
+ "Frames": [
+ {
+ "index": 0,
+ "duration": 1,
+ "elements": [
+ {
+ "ATLAS_SPRITE_instance": {
+ "name": "0000",
+ "Matrix3D": {
+ "m00": 1.0,
+ "m01": 0.0,
+ "m02": 0.0,
+ "m03": 0.0,
+ "m10": 0.0,
+ "m11": 1.0,
+ "m12": 0.0,
+ "m13": 0.0,
+ "m20": 0.0,
+ "m21": 0.0,
+ "m22": 1.0,
+ "m23": 0.0,
+ "m30": 0.0,
+ "m31": 1.0,
+ "m32": 0.0,
+ "m33": 1.0
+ },
+ "DecomposedMatrix": {
+ "Position": {
+ "x": 0.0,
+ "y": 1.0,
+ "z": 0.0
+ },
+ "Rotation": {
+ "x": 0.0,
+ "y": -0.0,
+ "z": 0.0
+ },
+ "Scaling": {
+ "x": 1.0,
+ "y": 1.0,
+ "z": 1.0
+ }
+ }
+ }
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "SYMBOL_name": "abot eyes 2",
+ "TIMELINE": {
+ "LAYERS": [
+ {
+ "Layer_name": "Layer_2",
+ "Frames": [
+ {
+ "index": 0,
+ "duration": 1,
+ "elements": [
+ {
+ "ATLAS_SPRITE_instance": {
+ "name": "0001",
+ "Matrix3D": {
+ "m00": 1.0,
+ "m01": 0.0,
+ "m02": 0.0,
+ "m03": 0.0,
+ "m10": 0.0,
+ "m11": 1.0,
+ "m12": 0.0,
+ "m13": 0.0,
+ "m20": 0.0,
+ "m21": 0.0,
+ "m22": 1.0,
+ "m23": 0.0,
+ "m30": 0.0,
+ "m31": 0.0,
+ "m32": 0.0,
+ "m33": 1.0
+ },
+ "DecomposedMatrix": {
+ "Position": {
+ "x": 0.0,
+ "y": 0.0,
+ "z": 0.0
+ },
+ "Rotation": {
+ "x": 0.0,
+ "y": -0.0,
+ "z": 0.0
+ },
+ "Scaling": {
+ "x": 1.0,
+ "y": 1.0,
+ "z": 1.0
+ }
+ }
+ }
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ }
+ ]
+ },
+ "metadata": {
+ "framerate": 24.0
+ }
+}
\ No newline at end of file
diff --git a/sprites/characters/abot/systemEyes/spritemap1.json b/sprites/characters/abot/systemEyes/spritemap1.json
index 17cc3a0..759682e 100644
--- a/sprites/characters/abot/systemEyes/spritemap1.json
+++ b/sprites/characters/abot/systemEyes/spritemap1.json
@@ -1 +1 @@
-{"ATLAS":{"SPRITES":[{"SPRITE":{"name":"0000","x":0,"y":0,"w":106,"h":38,"rotated":false}},{"SPRITE":{"name":"0001","x":0,"y":43,"w":79,"h":22,"rotated":false}}]},"meta":{"app":"Adobe Animate","version":"23.0.1.70","image":"spritemap1.png","format":"RGBA8888","size":{"w":106,"h":65},"resolution":"1"}}
+{"ATLAS":{"SPRITES":[{"SPRITE":{"name":"0000","x":0,"y":0,"w":106,"h":38,"rotated":false}},{"SPRITE":{"name":"0001","x":0,"y":43,"w":79,"h":22,"rotated":false}}]},"meta":{"app":"Adobe Animate","version":"23.0.1.70","image":"spritemap1.png","format":"RGBA8888","size":{"w":106,"h":65},"resolution":"1"}}
diff --git a/sprites/characters/neneChristmas.xml b/sprites/characters/neneChristmas.xml
new file mode 100644
index 0000000..c1e5f80
--- /dev/null
+++ b/sprites/characters/neneChristmas.xml
@@ -0,0 +1,119 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/sprites/characters/nene_dark.png b/sprites/characters/nene_dark.png
new file mode 100644
index 0000000..d6ebb08
Binary files /dev/null and b/sprites/characters/nene_dark.png differ
diff --git a/stages/tank.json b/stages/tank.json
index 391307d..b10c0c9 100644
--- a/stages/tank.json
+++ b/stages/tank.json
@@ -12,5 +12,7 @@
"camera_opponent": [-500, 200],
"camera_girlfriend": [0, 0],
"camera_speed": 1,
- "default": true
+ "default": true,
+
+ "name": "tank"
}
diff --git a/states/playstate.lua b/states/playstate.lua
index 241a93e..7fff952 100644
--- a/states/playstate.lua
+++ b/states/playstate.lua
@@ -133,7 +133,7 @@ local function state(songName, songDifficulty, show)
local stageString = files.read_file(string.format("stages/%s.json", stageName)) or
files.read_file("stages/stage.json")
- local stage = json.parse(stageString)
+ _G.stage = json.parse(stageString)
local unspawnedNotes = {}
local notes = {}
@@ -704,8 +704,18 @@ local function state(songName, songDifficulty, show)
Vector2(-stage.camera_boyfriend[1], -stage.camera_boyfriend[2]):Add(characters.bf.stageCamera
:Negate()):Add(Vector2(0, -200))
- cameraTween = tween.new(type(event.vars) == "table" and event.vars.duration or 0.5,
- render.cameraPosition, { x = cameraPosition.x, y = cameraPosition.y }, tween.easing.inOutQuad)
+ local ease = tween.easing.outQuad
+
+ local easetime = 1.5
+
+ if event.vars and type(event.vars) == "table" then
+ if event.vars.ease and event.vars.ease ~= "CLASSIC" then
+ easetime = event.vars.duration or 1.5
+ end
+ end
+
+ cameraTween = tween.new(easetime,
+ render.cameraPosition, { x = cameraPosition.x, y = cameraPosition.y }, ease)
elseif event.name == "zoomcamera" then
zoomTween = tween.new(event.vars.duration or 32, sharedVars, { defaultZoom = event.vars.zoom },
tween.easing.outExpo)
@@ -728,8 +738,6 @@ local function state(songName, songDifficulty, show)
characters[chars[event.vars.char] or event.vars.char]:Destroy()
characters[chars[event.vars.char] or event.vars.char] = Character(event.vars.to)
- characters[chars[event.vars.char] or event.vars.char].stagePosition = Vector2(stage.opponent[1],
- stage.opponent[2])
end
for index, module in next, modules do
@@ -907,15 +915,19 @@ local function state(songName, songDifficulty, show)
-- GF first so she is below other chars
if metadata.playData.characters.girlfriend then
characters.gf = Character(metadata.playData.characters.girlfriend)
- characters.gf.stagePosition = Vector2(stage.girlfriend[1], stage.girlfriend[2])
characters.gf:PlayAnimation("danceLeft")
characters.gf.sprite.layer = 0
+ if not characters.gf.hasStagePosition then
+ characters.gf.stagePosition = Vector2(stage.girlfriend[1], stage.girlfriend[2])
+ end
end
characters.bf = Character(metadata.playData.characters.player)
- characters.bf.stagePosition = Vector2(stage.boyfriend[1], stage.boyfriend[2])
characters.bf:PlayAnimation("idle")
characters.bf.sprite.layer = 1
+ if not characters.bf.hasStagePosition then
+ characters.bf.stagePosition = Vector2(stage.boyfriend[1], stage.boyfriend[2])
+ end
local image = love.graphics.newImage(string.format("images/icons/icon-%s.png", characters.bf.icon))
icons.bf = {
@@ -927,9 +939,11 @@ local function state(songName, songDifficulty, show)
if metadata.playData.characters.opponent and metadata.playData.characters.opponent ~= "none" then -- you can have no player2 but always player1
characters.dad = Character(metadata.playData.characters.opponent)
- characters.dad.stagePosition = Vector2(stage.opponent[1], stage.opponent[2])
characters.dad:PlayAnimation(characters.dad.animInfo.idle and "idle" or "danceLeft")
characters.dad.sprite.layer = 1
+ if not characters.dad.hasStagePosition then
+ characters.dad.stagePosition = Vector2(stage.opponent[1], stage.opponent[2])
+ end
local image = love.graphics.newImage(string.format("images/icons/icon-%s.png", characters.dad.icon))
icons.dad = {